Tam*_*mpa 62 python flask uwsgi
当我尝试使用uWSGI启动Flask时出现以下错误.我是这样开始的:
> # cd ..
> root@localhost:# uwsgi --socket 127.0.0.1:6000 --file /path/to/folder/run.py --callable app - -processes 2
Run Code Online (Sandbox Code Playgroud)
这是我的目录结构:
-/path/to/folder/run.py
-|app
-|__init__.py
-|views.py
-|templates
-|static
Run Code Online (Sandbox Code Playgroud)
的内容 /path/to/folder/run.py
if __name__ == '__main__':
from app import app
#app.run(debug = True)
app.run()
Run Code Online (Sandbox Code Playgroud)
的内容 /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)
Run Code Online (Sandbox Code Playgroud)
Mil*_*ric 190
我接受的解决方案有问题,因为我的烧瓶应用程序位于一个名为的变量中app.你可以把它放在你的wsgi中来解决这个问题:
from module_with_your_flask_app import app as application
Run Code Online (Sandbox Code Playgroud)
所以问题只是uwsgi期望一个名为的变量application.
Jef*_*ner 39
uWSGI不会将您的应用程序加载为__main__,因此它永远不会找到app(因为只有当应用程序作为名称运行时才会加载__main__).因此,您需要将其导入if __name__ == "__main__":块之外.
真的很简单:
from app import app
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
现在,您可以直接运行应用程序,python run.py或者通过uWSGI以您的方式运行它.
| 归档时间: |
|
| 查看次数: |
42527 次 |
| 最近记录: |