9

阅读烧瓶文档,我发现通常有两个地方放置调试标志:

  • 在创建烧瓶对象之后

    app = Flask(__name__)
    app.debug = True
    
  • 或通过 run 方法

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

在我的项目中,我有 app/ init .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)

我在第二个选项(通过 app.run)中看到的问题是在执行 run 方法之前不会设置 True 值。因为那样,在我的init .py 文件中,我将拥有 app.debug (False) 的默认值。通过第一个选项,我没有这个问题。

以上是正确的还是有什么我看不到的?那么无论应用程序如何,放置调试值的最佳位置是什么?

4

1 回答 1

17

文档说Both methods have the exact same effect.,但他们指的是在 Flask 应用程序实际运行之后。

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

在您上面描述的情况下,最好的选择是使用第一种方法,因为您在应用程序运行之前app.debug检查's 的值,但在它被定义和设置之后。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

这意味着您将能够立即检查您的应用程序是否将在调试模式下运行,并且当您运行您的应用程序时,您可以告诉它正在运行的环境,这将定义是否调试设置为真或假。

运行.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)
于 2013-03-14T02:18:09.487 回答