deploying flask app with uwsgi and flask-script Manager

只愿长相守 提交于 2019-12-05 22:49:35

问题


Traditionally, I have configured the UWSGI configuration file to call an application like below:

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')
...

But now, I am following Miguel Grinberg's Flask book and here he uses an application factory like below

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

with a "manager" (see flask-script Manager)

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()

In this configuration, I trigger my development server with $ python manage.py runserver

whereas before I triggered it with $ python run_web.py

Now, I am struggling with what to put in the uwsgi configuration file to allow this app to be deployed via UWSGI. Specifically, the app, module, and callable variables.

The error I am getting in my logs is:

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

回答1:


You don't use Flask-Script with uWSGI. You point it at the app directly. Or in your case, you point it at a call to the app factory. The simplest example is:

uwsgi --module 'myapp:create_app()'



回答2:


I am also using the flask-script manager , so what i did was

  • created a wsgi.py .which was like.

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

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

Note: the callable is the flask object name in the wsgi.py.



来源:https://stackoverflow.com/questions/30721269/deploying-flask-app-with-uwsgi-and-flask-script-manager

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