Имя пользовательского модуля 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
.