使用uwsgi和flask脚本管理器部署flask应用程序



传统上,我配置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 ---
...

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

uwsgi --module 'myapp:create_app()'

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

  • 创建了CCD_ 7。

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

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

注意:可调用的是wsgi.py中的烧瓶对象名称。

最新更新