首页 > 解决方案 > 在 Heroku Python Flask 应用程序中请求超时

问题描述

我已经训练了一个 DL 模型,并尝试通过 REST API 将其托管在 Heroku 服务器中,从而在 Internet 上公开它。

在本地,我尝试了所有 Heroku 配置,测试了 API,最后在 Heroku 上成功部署了它。访问该端点时,请求超时,在 heroku 日志中我可以看到以下输出:

2019-09-22T11:11:10.543181+00:00 app[web.1]: [2019-09-22 11:11:10 +0000] [48] [DEBUG] POST /analyse
2019-09-22T11:11:10.556943+00:00 app[web.1]: prediction started
2019-09-22T11:11:40.537864+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/analyse" host=obscure-peak-46855.herokuapp.com request_id=f8f450ca-fd07-491d-aba2-433da710a3e1 fwd="103.242.239.84" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https
2019-09-22T11:11:41.382624+00:00 app[web.1]: [2019-09-22 11:11:41 +0000] [4] [CRITICAL] WORKER TIMEOUT (pid:48)
2019-09-22T11:11:42.402385+00:00 app[web.1]: [2019-09-22 11:11:42 +0000] [49] [INFO] Booting worker with pid: 49
2019-09-22T11:12:39.861556+00:00 app[web.1]: [2019-09-22 11:12:39 +0000] [49] [DEBUG] Closing connection.

代表 Python 代码:

statusDict = {}
print('prediction started')
predictionResult = 1 if model.predict(inputData)[0] > 0.5 else 0
print('prediction complete')
statusDict['input comment'] = inputSentence
statusDict['status'] = 'prediction complete'
statusDict['prediction'] = predictionResult
response.update(statusDict)

在 Heroku 上公开您的 ML 模型时,是否有人遇到过类似的请求超时?我什至在 Heroku 日志中也看不到预测完整的打印语句。

标签: pythonmachine-learningherokuflaskdeep-learning

解决方案


发生这种情况是因为您的模型加载时间过长。你能告诉我们更多关于蛞蝓尺寸和型号的信息吗?当您的模型的整体流程需要超过 30 秒来呈现页面时,就会出现此错误。你能分享 Procfile 和 app.py 看看它在哪里花时间。如果文件中有任何不必要的库,请尝试删除。


推荐阅读