我正在尝试在 Heroku 上使用 Flask 开发我的第一个“大型”应用程序,并且我正在尝试在此处结合基本教程:https://devcenter.heroku.com/articles/python此处有说明:http://flask.pocoo.org/docs/patterns/packages/#larger-applications .它在本地与“工头启动”一起工作,但是当我推送到 Heroku 时,我收到一个错误,指出正在使用错误的端口:
Starting process with command
python run.py
2012-12-04T23:45:18+00:00 app[web.1]: * Running onhttp://127.0.0.1:5000/
2012-12-04T23:45:18+00:00 app[web.1]: * Restarting with reloader 2012-12-04T23:45:23+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 5000, should be 33507 (see environment variable PORT)
我对这一切都很陌生,但看起来它正试图在 Heroku 上“本地”运行。我尝试了各种组合,但无法让它发挥作用。我现在非常简单的代码是(应用程序称为“pml”):
目录:/pml
过程文件:
web: python run.py
运行.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!'
最佳答案
我没有使用 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))
关于python - 将 Flask 应用程序部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714205/