10

传统上,我将 UWSGI 配置文件配置为调用如下应用程序:

mydirectory/uwsgi_application.ini
...
#python module to import
app = run_web
module = %(app)
callable = app
...

,

mydirectory/run_web.py
from ersapp import app
if __name__ == "__main__":
    app.run()

,

mydirectory/ersapp/__init__.py
...
app = Flask('ersapp')
...

但是现在,我正在关注 Miguel Grinberg 的 Flask 书,在这里他使用了如下所示的应用程序工厂

mydirectory/ersapp/__init__.py
...
def create_app(config_name):
    webapp = Flask(__name__)
    ...
    return webapp

与“经理”(见烧瓶脚本经理

mydirectory/manage.py
from webapp import create_app
...
webapp = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(webapp)
...
if __name__ == '__main__':
    manager.run()

在这个配置中,我触发我的开发服务器$ python manage.py runserver

而在我触发它之前$ python run_web.py

现在,我正在为在 uwsgi 配置文件中添加什么内容以允许通过 UWSGI 部署此应用程序而苦苦挣扎。具体来说,appmodulecallable变量。

我在日志中遇到的错误是:

...
--- no python application found, check your startup logs for errors ---
...
4

2 回答 2

19

您不要将 Flask-Script 与 uWSGI 一起使用。您直接将其指向应用程序。或者在您的情况下,您将其指向应用程序工厂的调用。最简单的例子是:

uwsgi --module 'myapp:create_app()'
于 2015-06-09T04:21:45.790 回答
10

我也在使用flask-script经理,所以我所做的是

  • 创建了一个wsgi.py.which 就像。

    from app import * application = create_app("development")

  • 然后uwsgi --wsgi-file wsgi.py --callable application

注意:callable 是wsgi.py.

于 2015-09-11T05:21:53.747 回答