Flask and uWSGI - unable to load app 0 (mountpoint='') (callable not found or import error)

匿名 (未验证) 提交于 2019-12-03 01:51:02

问题:

I get the below error when I try and start Flask using uWSGI. Here is how I start:

>  # cd .. >     root@localhost:# uwsgi --socket 127.0.0.1:6000 --file /path/to/folder/run.py --callable app -  -processes 2 

Here is my directory structure:

-/path/to/folder/run.py       -|app           -|__init__.py           -|views.py           -|templates           -|static 

Contents of /path/to/folder/run.py

if __name__ == '__main__':    from app import app    #app.run(debug = True)    app.run() 

Contents of /path/to/folder/app/__init__.py

import os from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.login import LoginManager #from flaskext.babel import Babel from config import basedir app = Flask(__name__) app.config.from_object('config') #app.config.from_pyfile('babel.cfg')  db = SQLAlchemy(app) login_manager = LoginManager() login_manager.setup_app(app) login_manager.login_view = 'login' login_manager.login_message = u"Please log in to access this page."  from app import views  *** Operational MODE: preforking *** unable to find "application" callable in file /path/to/folder/run.py unable to load app 0 (mountpoint='') (callable not found or import error) *** no app loaded. going in full dynamic mode *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI worker 1 (pid: 26972, cores: 1) spawned uWSGI worker 2 (pid: 26973, cores: 1) 

回答1:

uWSGI doesn't load your app as __main__, so it never will find the app (since that only gets loaded when the app is run as name __main__). Thus, you need to import it outside of the if __name__ == "__main__": block.

Really simple change:

from app import app  if __name__ == "__main__":     app.run() 

Now you can run the app directly with python run.py or run it through uWSGI the way you have it.



回答2:

I had problems with the accepted solution because my flask app was in a variable called app. You can solve that with putting just this in your wsgi:

from module_with_your_flask_app import app as application 

So the problem was simply that uwsgi expects a variable called application.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!