2013-03-13 3 views
4

Чтение документации опоки я вижу, что есть два места, где обычно ставят флаг отладки:Где поставить флаг отладки в колбах приложений

  • после создания объекта колба

    app = Flask(__name__) 
    app.debug = True 
    
  • или методом выполнения

    app.run(host='0.0.0.0', debug = True) 
    

В моем проекте я приложение/инициализации .py файл:

from flask import Flask 
    app = Flask(__name__) 
    #app.debug = True  
    from app import views 
    if app.debug == True: 
     ... 
     ... 

И в run.py файл:

from app import app 
import os 
port = int(os.environ.get('PORT', 5000)) 
app.run(host='0.0.0.0', port=port, debug = True) 

Проблема, которую я вижу второй вариант (для каждого приложения .run) заключается в том, что значение True не будет установлено до выполнения метода run. Потому что в моем init .py-файл у меня будет значение по умолчанию app.debug (False). По первому варианту у меня нет этой проблемы.

Правильно ли это или что-либо, что я не вижу? Какое же самое лучшее место для размещения значения отладки независимо от приложения?

ответ

8

Документы говорят, что Both methods have the exact same effect., но они имеют в виду после того, как приложение Flask фактически запущено.

http://flask.pocoo.org/docs/quickstart/#debug-mode

В случае вы описали выше, лучшим вариантом будет использовать первый метод, как вы проверяете app.debug «сек значение перед тем запускается приложение, но после того, как она определена и после app.debug установлен.

Учитывая это, по мере того, как ваше приложение становится больше, вы можете подумать о создании немного более надежной структуры, где вы можете определить файл config-$ENV.py с установленным в нем флагом отладки.

приложение/CONF/config-dev.py

DEBUG = True 
# ... other settings (e.g., log location, project root, etc) 

приложение/CONF/config-live.py

DEBUG = False 
# ... other settings (e.g., log location, project root, etc) 

приложение/CONF/_ _init_ _ .py

EMPTY FILE 

приложение/_ _init_ _.ру

from flask import Flask 

def create_app(env='dev'): 
    app = Flask(__name__) 
    app.config.from_object('app.conf.config-%s' % env) 

    if app.debug: 
     print 'running in debug mode' 
    else: 
     print 'NOT running in debug mode' 
    return app 

Это означает, что вы будете иметь возможность сразу проверить, является ли или не будет работать в режиме отладки вашего приложения, и при запуске приложения вы можете указать, какие среды он запущен в , который определяет, установлено ли отладочное значение True или False.

run.py

from app import create_app 
import os 

port = int(os.environ.get('PORT', 5000)) 
app = create_app(env='dev') #Or pass 'live' to NOT be in debug mode 
app.run(host='0.0.0.0', port=port) 
Смежные вопросы