2015-01-21 2 views
1

Я использую eclipse для разработки моего проекта Django, и он будет развернут в Heroku. Для того, чтобы обнаружить, если приложение работает на Heroku, то settings.py модифицируется:Heroku: как определить, запущен ли мастер

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 или на Хереку. Однако, если я попытаюсь запустить foreman start вместо runserver, настройки в wsgi.py не будут работать, так как foreman также требует Cling.

Есть ли способ, которым я могу определить, работает ли приложение в foreman, чтобы я мог правильно настроить?

ответ

1

Heroku предоставить вам DATABASE_URL, Так что если «DATABASE_URL» не делает не существует, то это локальная машина

if not os.environ.has_key('DATABASE_URL'): 
     os.environ['DATABASE_URL'] = 'postgres://user:[email protected]/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() 
+0

Спасибо, но я не пытаюсь определить, если приложение работает локально или на Heroku. Я пытаюсь определить, работает ли приложение локально с 'manage.py runningerver' или с' foreman start'. –

+0

@ yltang52 Извините за поздний повтор, я путешествовал. И я обновил свой ответ. –

+0

Отлично! Большое спасибо. –

Смежные вопросы