2016-04-29 9 views
1

私はAzure WebAppにDjangoプロジェクトを持っています。プロジェクトの設定は、例えば、環境変数を使用して構成されていますDjangoでのAzure WebJobの環境変数

enter image description here

そしてsettings.py:一方

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': os.getenv("POSTGRES_DB"), 
     'USER': os.getenv("POSTGRES_USER"), 
     'PASSWORD': os.getenv("POSTGRES_PASSWOR), 
     'HOST': os.getenv("POSTGRES_HOST"), 
     'PORT': '', 
    } 
} 

、プロジェクトはDjangoのコマンドを実行しますWebJobがあります。

app_data 
|--jobs 
    |--triggered 
     |--my_webjob 
      |--run.py 
      |--settings.job 

WebJob、run.pyのスクリプト:

import sys 
sys.path.append(r"D:\\home\\site\\wwwroot\\env\\Lib\\site-packages") 
sys.path.append(r"D:\\home\\site\\wwwroot") 
import django 
from django.core.management import call_command 


django.setup() 
call_command('my_webjob') 

そして、私のコマンド「my_webjobは、」いくつかのstuffsをしようが、私は環境を印刷する場合はWebAppの、 の環境変数を取得しない、これが結果です:

my_webjob.py

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     print "=================" 
     print "DEBUG: ENVS" 
     print "=================" 
     print "POSTGRES_USER:" 
     print os.getenv("POSTGRES_USER", "") 
     print "---------------" 
     print "POSTGRES_DB:" 
     print os.getenv("POSTGRES_DB", "") 

WebJobが実行されている出力:

[04/29/2016 08:32:51 > 5d941a: INFO] ================= 
[04/29/2016 08:32:51 > 5d941a: INFO] DEBUG: ENVS 
[04/29/2016 08:32:51 > 5d941a: INFO] ================= 
[04/29/2016 08:32:51 > 5d941a: INFO] POSTGRES_USER: 
[04/29/2016 08:32:51 > 5d941a: INFO] 
[04/29/2016 08:32:51 > 5d941a: INFO] --------------- 
[04/29/2016 08:32:51 > 5d941a: INFO] POSTGRES: 
[04/29/2016 08:32:51 > 5d941a: INFO] 

WebAppのとWebジョブはこの問題を除いて正しく機能します。 簡単な解決策は、私の環境変数をファイルに書き込んでwebjobsで読むことですが、私のパスワード、URLはすべて環境変数に保存する必要があります

これらの環境変数をプロジェクトとWebJobs?

+0

こんにちは@Avara、まだ更新はありますか? –

+0

それは今の作品です。私は何も変更していないので、非常に奇妙です。たぶん、初めて私が展開したときに、webappが遅れて更新されました。私はこれを確認するために働いています。ありがとう@ GaryLiu - MSFT :) – Avara

答えて

0

私の側でうまく動作します。 Azure Web Jobの出力ログからエラーメッセージが出ていますか?ここで

はあなたの情報のための私のテストスクリプトです:

WebJob.py(私はテスト環境を構築するためにAzureのDjangoテンプレートを使用されるように単にデフォルトの構成でどの。):

import sys 
import os 
sys.path.append(r"D:\\home\\site\\wwwroot\\env\\Lib\\site-packages") 
sys.path.append(r"D:\\home\\site\\wwwroot") 
import django 
from django.core.management import call_command 

os.environ.setdefault(
     "DJANGO_SETTINGS_MODULE", 
     "DjangoWebProject.settings" 
    ) 

django.setup() 
call_command('my_webjob') 

my_webjob.py

from django.core.management.base import BaseCommand, CommandError 
import os 
class Command(BaseCommand): 
    def handle(self, *args, **options): 
     print "=================" 
     print "DEBUG: ENVS" 
     print "=================" 
     print "SOME_CUSTOM_SETTINGS:" 
     print os.getenv("SOME_CUSTOM_SETTINGS", "") 

どれさらに懸念、私に知らせてください。