Имя пользовательского модуля Procfile gunicorn

контекст: Я пишу приложение колбы среднего размера (10-15 просмотров), и в этом процессе я надеюсь организовать код таким образом, чтобы он был легко обслуживаемым и расширяемым (а не монолитным файлом, как большинство приложений колбы).

структура приложения имитирует документация следующим образом:

/AwesomeHackings
    /ENV
    /AwesomeHackings
        /models
        /static
        /templates
        /__init__.py
        /awesome.py
        /awesome.cfg
    /Procfile
    /README.MD
    /requirements.txt
    /run.py

: Я не могу заставить Формана работать с приложением колбы, которое не называется "app". Я бы с удовольствием run.py будьте точкой входа в мое приложение.

Я использую gunicorn + gevent, и мой текущий Procfile содержит:

web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run

Я использую run.py чтобы проверить приложение:

from AwesomeHackings import awesome
awesome.app.run(debug=True)

таким образом, я предположил, что могу просто заменить run на app в Procfile, но при выполнении foreman start, gunicorn терпит неудачу с бессмысленным словоблудием о модулях.

1 ответов


я нашел решение в документация Django. Основным параметром gunicorn является модуль:

gunicorn [OPTIONS] APP_MODULE

здесь APP_MODULE из шаблона MODULE_NAME:VARIABLE_NAME

хотя казалось логичным, чтобы синтаксис был ключевым словом аргумента app: someIdentifier, так как все учебники используют модуль с именем app, это на самом деле не так. Правильным аргументом в мою пользу было run:app.