2013-03-13 27 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)