8

我在 heroku 上托管了一个 flask-socketio 应用程序,其中包含以下 Procfile :

web: gunicorn --worker-class eventlet hello:app

自从我切换到 socketio 后,该应用程序的行为一直不一致。早些时候,应用程序会运行一段时间,然后 POST 请求会开始超时。

从昨天晚上开始,我一直收到错误

sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/static/js/third-party/browser.js" host=deard.herokuapp.com request_id=725da6af-aa29-4293-a411-2c89977f1d4d fwd="216.165.95.0" dyno=web.1 connect=1ms service=36ms status=503 bytes=13811

我阅读了 Heroku 错误代码描述,上面写着“在后端返回 HTTP 响应之前,属于您的应用程序的 Web 进程的后端套接字已关闭。”

但我不知道为什么会发生这种情况。

关于我应该注意什么的任何线索都将帮助我调试它。

我可以分享代码,但它有 300 行长,而且由于我不知道错误的来源,我不确定它是否会有所帮助。

4

2 回答 2

0

这对我有用:

from waitress import serve
# app.run(host='0.0.0.0', port=port) # <---- REMOVE THIS
# serve your flask app with waitress, instead of running it directly.
serve(app, host='0.0.0.0', port=port) # <---- ADD THIS

于 2020-07-22T22:02:54.030 回答
0

当您在服务器端(flask)上取消或重新发送相同的请求时,Flask 会引发这种“套接字流错误”,您仍在计算中以呈现与初始请求相对应的布局。

所以它可能与双方(服务器/客户端)的超时或网络错误处理有关。

一些问题:

服务器端的请求计算需要多长时间?您如何处理服务器端和客户端的网络错误异常?烧瓶或客户端是否存在任何超时?

也有可能在前一个请求结束之前发送了一个新请求。

请分享一些与请求处理相关的代码。

于 2017-02-09T20:54:18.173 回答