将Flask应用程序部署到Heroku

时间:2012-12-05 00:07:55

标签: python heroku flask

我正在尝试使用Heroku上的Flask开发我的第一个“大型”应用程序,我正在尝试将基本教程https://devcenter.heroku.com/articles/python与此处的说明结合起来:http://flask.pocoo.org/docs/patterns/packages/#larger-applications。它在本地使用“foreman start”,但当我推送到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的进程应为33507   (参见环境变量PORT)

我对这一切都不熟悉,但看起来它正试图在Heroku上“本地”运行。我尝试了各种各样的组合,但无法让它发挥作用。我现在非常简单的代码是(app被称为“pml”):

目录:/ pml

Procfile:

web: python run.py

run.py:

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

目录:/ pml / pml /

__初始化__。PY

from flask import Flask
app = Flask(__name__)

import pml.views

view.py

from pml import app

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

1 个答案:

答案 0 :(得分:30)

我没有使用Heroku,但对我来说,看起来他们有一个Flask的保留端口,特别是33507.看起来它会尝试使用环境变量,我不知道如何在Heroku中设置。好消息是你可以告诉Flask使用哪个端口。

试试这个:

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

并且看起来像将这个PORT添加到heroku中的env就像这样:

heroku config:add PORT=33507

应该只需要执行其中一项操作。我会尝试第一个,因为对我而言,这是解决问题的直接方法。

修改
在阅读了帖子中的文章之后,我会看到问题出在哪里。

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

该行说明,如果设置了,则从环境中获取PORT的值,否则使用5000.我不知道为什么他们不允许它从5000运行,如果这是他们的文档中的内容,但我会尝试这种改变:

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