【问题标题】:Multiple settings with Django and AppEngine使用 Django 和 AppEngine 进行多项设置
【发布时间】:2015-09-22 19:06:08
【问题描述】:

在我当前的设置中,我有多个用于本地、暂存和生产环境的设置文件。我只是为每个服务器设置了不同的 DJANGO_SETTINGS_MODULE 值。

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

我知道app.yaml 上有env_variables 选项,但我没有找到任何方法可以在appcfg.py 中覆盖它,就像我可以为versionapplication 选项做的那样。

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

【问题讨论】:

  • 您是在同一个应用引擎项目还是多个项目上托管您的环境?您可以使用appengine_config.py 和设置os.environ['DJANGO_SETTINGS_MODULE'] 来动态处理它
  • 我正在使用单独的项目

标签: python django google-app-engine


【解决方案1】:

我们在应用程序根目录的appengine_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)

【讨论】:

  • 每个环境有不同的 app.yaml 吗?
  • @filias 我没有。我有一个app.yaml 并使用appcfg 的应用程序ID 标志或gcloud--project 标志进行部署,以指定要部署到哪个项目。
猜你喜欢
  • 1970-01-01
  • 2017-01-26
  • 2020-06-10
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多