使用Django和AppEngine进行多项设置

时间:2015-09-22 19:06:08

标签: python django google-app-engine

在我当前的设置中,我有多个用于本地,登台和生产环境的设置文件。我对每个服务器只有不同的DJANGO_SETTINGS_MODULE值。

但现在我正在尝试迁移到AppEngine,我想知道如何使用不同的DJANGO_SETTINGS_MODULE环境变量值部署到不同的AppEngine实例。

我知道env_variables上有app.yaml个选项,但我找不到任何可以在appcfg.py覆盖它的方法,因为我可以为version和{{1}做选项。

有什么办法可以做我需要的吗?

1 个答案:

答案 0 :(得分:2)

我们在应用程序根目录的appengine_config.py文件中为我们的webapp2项目使用类似的东西。我们的想法是,我们根据项目的app 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)