python - 将 Flask 应用程序部署到 Heroku

标签 python heroku flask

我正在尝试在 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 on http://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/

相关文章:

python - multiprocess.apply_async 如何包装 *args 和 **kwargs?

node.js - Heroku 的 Nginx + Node.js

python - 自定义 Flask-WTF 或 WTForms

python - 使用 Git/PyCharm 维护 Python 项目的精简版和专业版

python - 打开 .txt 文件并打印内容的功能不起作用

ruby-on-rails - Rails - 部署中的失败路由

ruby-on-rails - 如何在 Heroku 中编辑 gem

python - 将 flask 嵌入带有装饰器的类中

python - 使用 apache + wsgi 仅启动一个 Flask 实例

python - Haskell 中没有模式匹配的错误处理