Я пытаюсь запустить приложение Flask на Heroku (с nginx + gunicorn).Мой профайл Heroku:
web: bin/start-nginx gunicorn -c config/gunicorn.py myflaskmodule:app
Я получаю ошибки от gunicorn, такие как:
gunicorn.errors.HaltServer: <HaltServer 'App failed to load.' 4>
или, в зависимости от имени приложения, которое я пробовал, ошибка gunicorn может быть:
Application object must be callable.
Приложение Flask настроено в каталоге с именем myflaskmodule
, содержащем каталог static
, каталог templates
, auth.py
, db.py
, btac.py
и __init__.py
,
В btac.py
проект определяется как:
bp = Blueprint('btac', __name__, url_prefix='/btac')
Затем я определяю несколько функций колб в btac.py
, таких как:
@bp.route('/', methods=['GET'])
def index():
# Do some things...
return render_template()
В __init.py__
У меня есть одна функция:
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
# lots of other unrelated content here...
db.init_app(app)
app.register_blueprint(auth.bp)
app.register_blueprint(btac.bp)
return app
В терминале (или bash-скрипте) после выполнения export FLASK_ENV=development
и export FLASK_APP=myflaskmodule
приложение Flask запускается локально с flask run
.
Как мне определить последний аргумент в профиле Heroku?Это должно быть module_name:app_name
.Я попытался myflaskmodule:app
, myflaskmodule:myflaskmodule
, myflaskmodule:bp
, myflaskmodule:btac
.
Я вполне уверен, что первая часть аргумента должна быть myflaskmodule
(имя основного каталога Flask),но я не могу точно определить название приложения Flask.
Flask == 1.0.2, gunicorn == 19.9.0