Развертывание приложения Flask в Heroku

Я пытаюсь разработать свое первое "большое" приложение с Flask на Heroku, и я пытаюсь объединить основной учебник здесь: https://devcenter.heroku.com/articles/python с инструкциями здесь: http://flask.pocoo.org/docs/patterns/packages/#larger-applications. Он работает локально с "стартом мастера", но когда я нажимаю на Heroku, я получаю сообщение об ошибке, что используется неправильный порт:

Запуск с командой python run.py2012-12-04T23: 45: 18 + 00: 00 приложение [web.1]: * Работает http://127.0.0.1:5000/ 2012-12-04T23: 45: 18 + 00: 00 приложение [web.1]: * Перезагрузка с перезагрузкой 2012-12-04T23: 45: 23 + 00: 00 heroku [web.1]: Ошибка R11 (Плохая привязка) → Процесс, связанный с портом 5000, должен быть 33507 (см. переменную окружения PORT)

Я новичок во всем этом, но похоже, что он пытается запустить "локально" на Heroku. Я пробовал всевозможные комбинации, но не могу заставить его работать. Мой очень простой код прямо сейчас (приложение называется "pml" ):

каталог:/pml

PROCFILE:

web: python run.py

run.py:

from pml import app
app.run(debug=True)

каталог:/pml/pml/

__ __ INIT. Ру

from flask import Flask
app = Flask(__name__)

import pml.views

view.py

from pml import app

@app.route('/')
def index():
    return 'Hello World!'

Ответы

Ответ 1

Я не использовал Heroku, но для меня это похоже, что у них есть зарезервированный порт для Flask, в частности 33507. Похоже, что он попытается использовать переменную окружения, которую я не уверен, как установить в Heroku, Хорошая новость заключается в том, что вы можете указать флажок, который порт использовать.

попробуйте следующее:

app.run(debug=True, port=33507)

и похоже, что добавление PORT в env в heroku выполняется следующим образом:

heroku config:add PORT=33507

Вам следует делать только один из них. Я бы попробовал первый, поскольку для меня это прямой способ решить проблему.

ИЗМЕНИТЬ
Прочитав статью со своего поста, я вижу, где проблема.

port = int(os.environ.get('PORT', 5000))

В этой строке указывается значение PORT из среды, если оно установлено, в противном случае используется 5000. Я не уверен, почему они не позволят ей работать с 5000, если это то, что находится в их документах, но Я бы попробовал это изменение:

port = int(os.environ.get('PORT', 33507))