将Flask应用程序部署到Heroku

cri*_*rix 19 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]:*重启reloader 2012-12-04T23:45:23 + 00:00 heroku [web.1]:错误R11(Bad bind) - >绑定到端口5000的进程,应该是33507(参见环境变量PORT)

我对这一切都很陌生,但看起来它正试图在Heroku上"本地"运行.我尝试了各种各样的组合,但无法让它发挥作用.我现在非常简单的代码是(该应用程序称为"pml"):

目录:/ pml

Procfile:

web: python run.py
Run Code Online (Sandbox Code Playgroud)

run.py:

from pml import app
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

目录:/ pml/pml /

__init__.py

from flask import Flask
app = Flask(__name__)

import pml.views
Run Code Online (Sandbox Code Playgroud)

view.py

from pml import app

@app.route('/')
def index():
    return 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

sbe*_*rry 31

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

试试这个:

app.run(debug=True, port=33507)
Run Code Online (Sandbox Code Playgroud)

看起来像将pORT添加到heroku中的env就像这样:

heroku config:add PORT=33507
Run Code Online (Sandbox Code Playgroud)

应该只需要做其中一个.我会尝试第一个,因为它对我来说是解决问题的直接方法.

编辑
阅读您帖子中的文章后,我会看到问题出在哪里.

port = int(os.environ.get('PORT', 5000))
Run Code Online (Sandbox Code Playgroud)

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

port = int(os.environ.get('PORT', 33507))
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你指点我正确的方向.我终于通过将run.py改为:`import os``从pml import app``port = int(os.environ.get('PORT',5000))``app.run(host =')来实现它的工作. 0.0.0.0',port = port)` (9认同)