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