我有此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
请告知如何解决此错误?
答案 0 :(得分:1)
据我所知,您应该从环境变量中获取端口,所以它将是:
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
可以在here中找到。还有一个similar question。希望这一点可以弄清楚。