python - 在 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 日志中也看不到预测完整的打印语句。
解决方案
发生这种情况是因为您的模型加载时间过长。你能告诉我们更多关于蛞蝓尺寸和型号的信息吗?当您的模型的整体流程需要超过 30 秒来呈现页面时,就会出现此错误。你能分享 Procfile 和 app.py 看看它在哪里花时间。如果文件中有任何不必要的库,请尝试删除。
推荐阅读
- c# - 在统一应用程序之间通信/发送数据的最佳实践?
- python - 带有ajax请求的Django
- r - 如何使用 sens.slope 函数的结果(输出)创建数据框?
- arrays - 按数组聚合组并将数量除以数组长度
- angular - 我如何需要为 ngxs selectSnapshot 调用字符串重载?
- python - 在 Beaglebone Black 上读取 I2C 字节
- typescript - 如何使用 typeScript 启动 selenium web-driver?
- r - R Studio - 合并文件并写入中央文件 - 重复问题
- javascript - 有没有办法从项目中删除所有的mutationObservers而不参考它?
- python - 使用 fipy 的 Python pde 解决方案给出值错误