Heroku:如何检测工头是否 运行
Heroku: how to detect if foreman is running
我正在使用eclipse 开发我的Django 项目,它将部署到Heroku。为了检测应用程序是否在 Heroku 上 运行ning,修改 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
检测该应用程序是否 运行 以便我可以进行适当的设置?
Heroku 为您提供 DATABASE_URL
,所以如果“DATABASE_URL
”不存在,那么它是本地计算机
if not os.environ.has_key('DATABASE_URL'):
os.environ['DATABASE_URL'] = 'postgres://user:password@localhost/name'
DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}
已更新:将答案与确切问题相匹配。
Procfile
export SERVER_ENV=foreman
web: gunicorn yourapp.wsgi
wsgi.py
if os.getenv('SERVER_ENV') == 'foreman':
application = Cling(get_wsgi_application())
else:
application = get_wsgi_application()
我正在使用eclipse 开发我的Django 项目,它将部署到Heroku。为了检测应用程序是否在 Heroku 上 运行ning,修改 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
检测该应用程序是否 运行 以便我可以进行适当的设置?
Heroku 为您提供 DATABASE_URL
,所以如果“DATABASE_URL
”不存在,那么它是本地计算机
if not os.environ.has_key('DATABASE_URL'):
os.environ['DATABASE_URL'] = 'postgres://user:password@localhost/name'
DATABASES = {'default': dj_database_url.config(default=os.environ['DATABASE_URL'])}
已更新:将答案与确切问题相匹配。
Procfile
export SERVER_ENV=foreman
web: gunicorn yourapp.wsgi
wsgi.py
if os.getenv('SERVER_ENV') == 'foreman':
application = Cling(get_wsgi_application())
else:
application = get_wsgi_application()