2013-03-13 54 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)是在执行run方法之前不会设置True值。因为在我的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_ _。PY

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)