Вопрос можно разделить на две отдельные части.Как запустить приложение Flask с помощью gunicorn?
У меня есть следующий проект stucture
|- project | |-- app/ - directory with actual project code | |-- app.py - imports something from app/ and call create_app
Когда я бегу
gunicorn
я должен указать егоapp
объект, который на самом деле создан вapp.py
. Так что я получаю сообщение об ошибке, потому что увольняющее лицо рассматривает пакетapp:app
. Единственный способ - переименовать?Я использую метод factory для создания приложения. Поэтому я импортирую
create_app
fuction в app.py и передаю егоManager
изflask.ext.script
. Я передаю объект менеджера на пушку. В этом случае gunicorn работает правильно, но как только первый запрос приходит, я получаю следующее сообщение об ошибке:[2015-03-25 15:38:11 +0000] [14395] [ERROR] Error handling request Traceback (most recent call last): File "/opt/env/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 52, in handle self.handle_request(listener_name, req, client, addr) File "/opt/env/local/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 159, in handle_request super(GeventWorker, self).handle_request(*args) File "/opt/env/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 105, in handle_request respiter = self.wsgi(environ, resp.start_response) TypeError: __call__() takes at most 2 arguments (3 given)
Возможно, я мог бы создать какой-то файл
wsgi.py
и обеспечить текущее приложение для gunicorn?