我有这个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:0 heroku[web.1]:状态已从更改启动时崩溃
2020-02-26T14:08:38.283732+00:0 heroku[web.1]:正在使用启动进程命令
python main.py
2020-02-26T14:08:41.705572+00:0应用程序[web.1]:*服务烧瓶应用程序"主"(延迟加载(
2020-02-26T14:08:41.705637+00:0 app[web.1]:*环境:生产
2020-02-26T14:08:41.705644+00:0应用[web.1]:警告:这是开发服务器。不要在生产部署中使用它。
2020-02-26T14:08:41.705705+00:0应用[web.1]:使用生产WSGI服务器。
2020-02-26T14:08:41.705763+00:0 app[web.1]:*调试模式:关闭
2020-02-26T14:08:41.722252+00:0 app[web.1]:*运行于http://0.0.0.0:7410/(按CTRL+C退出(
2020-02-26T14:09:38.524175+00:0 heroku[web.1]:状态已从更改开始崩溃
2020-02-26T14:09:38.453425+00:0 heroku[web.1]:错误R10(启动timeout(->Web进程未能在的60秒内绑定到$PORT启动
2020-02-26T14:09:38.453485+00:0 heroku[web.1]:正在使用停止进程SIGKILL
2020-02-26T14:09:38.509347+00:0 heroku[web.1]:进程已退出状态137
请告知如何修复此错误?
正如我所知,您应该从环境变量中获取端口,因此它将是:
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
可以在这里找到。还有一个类似的问题。希望这能说明问题。