Подтвердить что ты не робот

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

Ответ 1

Gunicorn (и большинство серверов WSGI) по умолчанию ищет вызываемые имена application или app в любом модуле, на который вы указываете его. Просто добавление псевдонима from myproject import myapp as application или application = myapp позволит Gunicorn снова обнаружить вызываемый.

Однако файл wsgi.py или псевдоним не нужны, Gunicorn может быть направлен непосредственно на реальный модуль и может быть вызван. Существует почти никогда не веская причина иметь отдельный файл wsgi.py.

gunicorn myproject:myapp --workers 16