Развертывание приложения 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 app [web.1]: * Работает в http://127.0.0.1:5000/ 2012-12-04T23: 45: 18 +00: 00 app [web.1]: * Перезапуск с перезагрузкой 2012-12-04T23: 45: 23 + 00: 00 heroku [web.1]: Ошибка R11 (Плохая привязка) -> Процесс, связанный с портом 5000, должен be 33507 (см. переменную среды PORT)

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

каталог: / pml

PROCFILE:

 web: python run.py 

run.py:

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

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

__init__.py

 from flask import Flask app = Flask(__name__) import pml.views 

view.py

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

One Solution collect form web for “Развертывание приложения Flask в Heroku”

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

попробуй это:

 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)) 
  • Как использовать dj-database-url при соединении с postgresql в heroku с помощью python
  • Heroku / python не удалось обнаружить set buildpack
  • Как настроить файл требований.txt для нескольких сред?
  • Подавать статические файлы на героку с помощью AWS S3 для django?
  • Python - IOError: Нет такого файла или каталога: u'lastid.py 'для файла в том же каталоге. Работает на месте, не на Хереку
  • url_for с _external = True на heroku не добавляет имя сервера в URL-адрес
  • Невозможно выполнить учебник Python от heroku в папке Dropbox
  • Django - heroku, авария при развертывании / запуске
  • Никаких веб-процессов, запускающих Django в heroku
  • Push отклонен, не удалось скомпилировать приложение Python
  • количество дней в сети по времени дня
  •  
    Interesting Posts for Van-Lav

    Как вы получаете Python для записи кода функции, имеющейся в памяти?

    Как захватить вывод stdout из вызова функции Python?

    Параллельная обработка большого .csv-файла в Python

    Создание интерактивного командного цикла с использованием наследования python34

    Python sys.stdin.read (max) до тех пор, пока не будет прочитано max (если max> = 0), блокирует до EOF else, но select указывает, что есть данные для чтения

    Python – проблема SSL с Oauth2

    Эффективное получение XML в Elasticsearch

    Используя предварительно вычисленную матрицу Грама в линейных моделях sklearn (Lasso, Lars и т. Д.),

    Django 1.8 Cache busting + Amazon S3

    Как контролировать выделение выделения со списком tkinter

    преобразовать верхнюю / нижнюю треугольную часть симметричной матрицы (2D-массив) в 1D-массив и вернуть его в 2D-формат

    Функции Python вызывают по ссылке

    Преобразование даты строки в метку времени в Python

    Python: измените dict, чтобы сделать ключ значением, а значение – ключом

    использование Dropbox в качестве сервера для моего приложения django

    Python - лучший язык программирования в мире.