развертывание приложения flask с помощью uwsgi и диспетчера flask-script

Традиционно я настроил файл конфигурации 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')
...

Но теперь я слежу за книгой Мигеля Гринберга Flask, и здесь он использует фабрику приложений, как показано ниже.

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

с «менеджером» (см. диспетчер скриптов flask)

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. В частности, переменные app, module и callable.

Ошибка, которую я получаю в своих журналах:

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

person Brian Leach    schedule 09.06.2015    source источник


Ответы (2)


Вы не используете Flask-Script с uWSGI. Вы указываете его непосредственно на приложение. Или, в вашем случае, вы указываете на вызов фабрики приложений. Самый простой пример:

uwsgi --module 'myapp:create_app()'
person davidism    schedule 09.06.2015

Я также использую менеджер flask-script, так что я сделал следующее:

  • создал wsgi.py .который был похож.

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

  • затем uwsgi --wsgi-file wsgi.py --callable application

Примечание: вызываемый объект — это имя объекта фляги в файле wsgi.py.

person GIRISH RAMNANI    schedule 11.09.2015