2016-01-05 51 views
3

我有以下設置加載在我的Python應用程序配置無法從uwsgi

server.py

from bots.flask_app import app 
from bots.flask_app.api import api 
from bots.flask_app.public import public 
from bots import db 

from bots.commons.helpers.flask.json.serializer import make_alternative_encoder 

from flask_debugtoolbar import DebugToolbarExtension 

import logging 

import bots.commons.managers.configuration as ConfigurationManager 

logger = logging.getLogger() 


####### 
# Public functions 
####### 
def setup_db_and_app(): 
    # Flask application bootstrap 
    config = ConfigurationManager.get_flask_rest_config() 
    app.config.update(config) 
    logger.debug('Flask configuration object: %s', app.config) 

    # MongoDB connection initialization 
    db.init_app(app) 

    # Debug toolbar enabled only if Flask in debug mode 
    if ConfigurationManager.get_raw_flask_rest_config()['flask']['debug']: 
     DebugToolbarExtension(app) 

    # Replace the serializer with the custom one (for ObjectId and DateTime serialization) 
    app.json_encoder = make_alternative_encoder(app.json_encoder) 

    # Register the components 
    app.register_blueprint(api) 
    app.register_blueprint(public) 


def start_server(): 
    setup_db_and_app() 
    logger.debug('Registered routes: %s', app.url_map) 
    app.run(host='0.0.0.0') 

main.py

import bots.flask_app.server as FlaskApp 

import bots.commons.managers.log as LogManager 

# Logging initialization 
LogManager.init_logging() 

# Defined in server.py 
FlaskApp.start_server() 

我想看看這是否敷貼器牀由uwsgi擔任如下

uwsgi --socket 0.0.0.0:8080 --protocol=http -w main 

的輸出如下

INFO:werkzeug: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 
INFO:werkzeug: * Restarting with stat 
unable to load configuration from uwsgi 

我的問題 1.我在哪裏可以找到哪些是造成這一問題的配置? 2.可以將main.py定義爲可調用並用作-w的參數嗎?

這是一個已經由某人寫的應用程序,我試圖通過uwsgi提供此應用程序。

任何建議將是有益的

感謝

回答

6

我有「無法加載從uwsgi配置」的錯誤了。據flask uwsgi docs

請提前確保任何app.run()調用,你可能在你的應用程序文件是一個if __name__ == '__main__':塊內或移動到一個單獨的文件。只要確保它沒有被調用,因爲這將始終啓動本地WSGI服務器,如果我們將該應用程序部署到uWSGI,我們不希望這樣做。

我將app.run()改爲if __name__ == '__main__':,問題就解決了。也許你可以嘗試把FlaskApp.start_server()置於if __name__ == '__main__':之下。

+0

你救了我的一天! – pexea12