2016-04-29 54 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」嘗試着做一些東西,但沒有得到Web應用程序, 的環境變量,如果我打印環境,這是結果:

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] 

的Web應用程序和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", "") 

任何進一步的關注,請隨時讓我知道。