Gunicorn не может найти приложение, когда имя изменилось с "приложения"
Я использую gunicorn --workers 3 wsgi
для запуска моего приложения Flask. Если я изменю переменную application
на myapp
, Gunicorn выдает ошибку AppImportError: Failed to find application: 'wsgi'
. Почему я получаю эту ошибку и как ее исправить?
myproject.py
:
from flask import Flask
myapp = Flask(__name__)
@myapp.route("/")
def hello():
return 'Test!'
if __name__ == "__main__":
myapp.run(host='0.0.0.0')
wsgi.py
:
from myproject import myapp
if __name__ == "__main__":
myapp.run()
Ответы
Ответ 1
Gunicorn (и большинство серверов WSGI) по умолчанию ищет вызываемые имена application
или app
в любом модуле, на который вы указываете его. Просто добавление псевдонима from myproject import myapp as application
или application = myapp
позволит Gunicorn снова обнаружить вызываемый.
Однако файл wsgi.py
или псевдоним не нужны, Gunicorn может быть направлен непосредственно на реальный модуль и может быть вызван. Существует почти никогда не веская причина иметь отдельный файл wsgi.py
.
gunicorn myproject:myapp --workers 16