【发布时间】:2015-01-21 03:36:37
【问题描述】:
我正在使用 eclipse 开发我的 Django 项目,它将被部署到 Heroku。为了检测应用程序是否在 Heroku 上运行,修改了 settings.py:
if 'DYNO' in os.environ: # Is running on Heroku
DEBUG = False
else:
DEBUG = True
...
if DEBUG==True:
DATABASES = {
'default': {
...
}
}
else: # For Heroku
# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES = {'default':dj_database_url.config()}
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
同时修改wsgi.py:
from <myApp> import settings
if settings.DEBUG==True:
application = get_wsgi_application()
else: # For Heroku
from dj_static import Cling
application = Cling(get_wsgi_application())
上述修改是为了识别应用程序是在本地使用runserver 运行还是在 Heroku 上运行。但是,如果我尝试运行foreman start 而不是runserver,则wsgi.py 中的设置将不起作用,因为foreman 也需要Cling。
有没有一种方法可以检测应用程序是否由foreman 运行,以便进行正确设置?
【问题讨论】: