将Python部署到Heroku-Web进程无法绑定到$ PORT

时间:2020-02-26 14:17:02

标签: python heroku

我有此python代码可部署到Heroku:

import flask
import pandas as pd


def create_app():
    app = flask.Flask(__name__)

    @app.route('/', methods=['GET', 'POST'])
    def index():
        """
        Index page view handler.
        :return: rendered index.html template
        """
        return flask.render_template('index.html')

    @app.route('/data', methods=['GET', 'POST'])
    def data():
        """
        Data view handler
        :return: JSON object of the data CSV file
        """
        data = pd.read_csv('task_data.csv')

        context = {
            'sensor_data': data.to_dict(orient='list')
        }
        return flask.jsonify(context)

    return app


if __name__ == "__main__":
    app = create_app()
    app.config['TEMPLATES_AUTO_RELOAD'] = True
    # serve the application on port 7410
    app.run(host='0.0.0.0', port=7410)

Procfile

web: python main.py

上传文件后,现在在日志视图中出现以下错误:

2020-02-26T14:08:32.485820 + 00:00 heroku [web.1]:状态从 崩溃开始

2020-02-26T14:08:38.283732 + 00:00 heroku [web.1]:启动过程 命令python main.py

2020-02-26T14:08:41.705572 + 00:00 app [web.1]:*服务Flask应用 “主要”(延迟加载)

2020-02-26T14:08:41.705637 + 00:00 app [web.1]:*环境: 生产

2020-02-26T14:08:41.705644 + 00:00 app [web.1]:警告:这是一个 开发服务器。不要在生产部署中使用它。

2020-02-26T14:08:41.705705 + 00:00 app [web.1]:使用生产WSGI 服务器。

2020-02-26T14:08:41.705763 + 00:00 app [web.1]:*调试模式:关闭

2020-02-26T14:08:41.722252 + 00:00 app [web.1]:*在 http://0.0.0.0:7410/(按CTRL + C退出)

2020-02-26T14:09:38.524175 + 00:00 heroku [web.1]:状态从 开始崩溃

2020-02-26T14:09:38.453425 + 00:00 heroku [web.1]:错误R10(启动 超时)-> Web进程在60秒内未能绑定到$ PORT 发射

2020-02-26T14:09:38.453485 + 00:00 heroku [web.1]:使用以下命令停止进程 SIGKILL

2020-02-26T14:09:38.509347 + 00:00 heroku [web.1]:进程退出 状态137

请告知如何解决此错误?

1 个答案:

答案 0 :(得分:1)

据我所知,您应该从环境变量中获取端口,所以它将是:

port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)

可以在here中找到。还有一个similar question。希望这一点可以弄清楚。

相关问题