Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django和AppEngine的多种设置_Python_Django_Google App Engine - Fatal编程技术网

Python Django和AppEngine的多种设置

Python Django和AppEngine的多种设置,python,django,google-app-engine,Python,Django,Google App Engine,在当前设置中,我有多个用于本地、临时和生产环境的设置文件。我只是对每台服务器有不同的DJANGO\u设置\u模块值 但现在我正试图转到AppEngine,我想知道如何使用不同的DJANGO\u设置\u模块环境变量值部署到不同的AppEngine实例 我知道在app.yaml上有env_variables选项,但我没有找到任何方法可以在appcfg.py中覆盖它,就像我在版本和应用程序选项中所做的那样 有什么方法可以满足我的需要吗?我们在应用程序根目录中的appengine\u config.py

在当前设置中,我有多个用于本地、临时和生产环境的设置文件。我只是对每台服务器有不同的
DJANGO\u设置\u模块

但现在我正试图转到AppEngine,我想知道如何使用不同的
DJANGO\u设置\u模块
环境变量值部署到不同的AppEngine实例

我知道在
app.yaml
上有
env_variables
选项,但我没有找到任何方法可以在
appcfg.py
中覆盖它,就像我在
版本
应用程序
选项中所做的那样


有什么方法可以满足我的需要吗?

我们在应用程序根目录中的
appengine\u config.py
文件中为我们的webapp2项目使用类似的方法。我们的想法是根据项目的应用程序id交换配置。我为这个例子编了一些常量,但它应该给你足够的时间开始

import os
from google.appengine.api import app_identity

app_id = app_identity.get_application_id()

if os.environ.get('SERVER_SOFTWARE', 'dev').lower().startswith('dev'):
    os.environ['DJANGO_SETTINGS_MODULE'] = 'local settings'
elif app_id == MY_DEV_ID:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'dev settings'
elif app_id == MY_STAGING_ID:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'staging settings'
elif app_id == MY_PROD_ID:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'prod settings'
else:
    raise ValueError("Unknown app id %" % app_id)

您是在同一个应用程序引擎项目上托管环境,还是在多个项目上托管环境?您可以使用
appengine\u config.py
和设置
os.environ['DJANGO\u SETTINGS\u MODULE']
来动态处理它。我使用的是单独的项目。每个环境有不同的app.yaml吗?@filias我没有。我有一个
app.yaml
并使用
appcfg
的应用程序id标志或
gcloud
--project
标志进行部署,以指定部署到哪个项目。