【问题标题】:Eventlet heroku flasksocketio app not workingEventlet heroku flasksocketio 应用程序不工作
【发布时间】:2021-05-26 17:06:56
【问题描述】:

我在将使用 websockets 的 Flask 应用程序部署到 heroku 时遇到了很多麻烦。它适用于heroku local,甚至在本地运行相同的命令时也能正常工作。

web:  gunicorn --worker-class eventlet --log-file=- app:app

该应用程序与此处的示例相同,只有很少的更改:https://github.com/miguelgrinberg/Flask-SocketIO/blob/master/example/app.py

以下是错误日志:

2021-02-24T11:18:46.724927+00:00 heroku[web.1]: State changed from starting to up

2021-02-24T11:19:08.934471+00:00 app[web.1]: [2021-02-24 11:19:08 +0000] [4] [INFO] Shutting down: Master

2021-02-24T11:19:09.027108+00:00 heroku[web.1]: Process exited with status 0

2021-02-24T11:19:15.379018+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=break1n.herokuapp.com request_id=f1d4ceac-69a1-43fc-a08d-c7462c6501fd fwd="122.181.58.194" dyno=web.1 connect=1ms service=17217ms status=503 bytes=0 protocol=https

2021-02-24T11:19:15.374389+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [4] [CRITICAL] WORKER TIMEOUT (pid:8)

2021-02-24T11:19:15.374534+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [4] [CRITICAL] WORKER TIMEOUT (pid:9)

2021-02-24T11:19:15.377083+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [9] [ERROR] Socket error processing request.

2021-02-24T11:19:15.377084+00:00 app[web.1]: Traceback (most recent call last):

2021-02-24T11:19:15.377084+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 65, in handle

2021-02-24T11:19:15.377085+00:00 app[web.1]:     util.reraise(*sys.exc_info())

2021-02-24T11:19:15.377085+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise

2021-02-24T11:19:15.377086+00:00 app[web.1]:     raise value

2021-02-24T11:19:15.377086+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 38, in handle

2021-02-24T11:19:15.377086+00:00 app[web.1]:     listener_name = listener.getsockname()

2021-02-24T11:19:15.377087+00:00 app[web.1]: OSError: [Errno 9] Bad file descriptor

2021-02-24T11:19:15.377336+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [8] [ERROR] Socket error processing request.

2021-02-24T11:19:15.377336+00:00 app[web.1]: Traceback (most recent call last):

2021-02-24T11:19:15.377336+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 65, in handle

2021-02-24T11:19:15.377337+00:00 app[web.1]:     util.reraise(*sys.exc_info())

2021-02-24T11:19:15.377337+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise

2021-02-24T11:19:15.377337+00:00 app[web.1]:     raise value

2021-02-24T11:19:15.377338+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 38, in handle

2021-02-24T11:19:15.377338+00:00 app[web.1]:     listener_name = listener.getsockname()

2021-02-24T11:19:15.377338+00:00 app[web.1]: OSError: [Errno 9] Bad file descriptor

2021-02-24T11:19:15.377724+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [9] [INFO] Worker exiting (pid: 9)

2021-02-24T11:19:15.378140+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [8] [ERROR] Socket error processing request.

2021-02-24T11:19:15.378141+00:00 app[web.1]: Traceback (most recent call last):

2021-02-24T11:19:15.378141+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 65, in handle

2021-02-24T11:19:15.378142+00:00 app[web.1]:     util.reraise(*sys.exc_info())

2021-02-24T11:19:15.378142+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise

2021-02-24T11:19:15.378142+00:00 app[web.1]:     raise value

2021-02-24T11:19:15.378149+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 38, in handle

2021-02-24T11:19:15.378149+00:00 app[web.1]:     listener_name = listener.getsockname()

2021-02-24T11:19:15.378149+00:00 app[web.1]: OSError: [Errno 9] Bad file descriptor

2021-02-24T11:19:15.378747+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [8] [ERROR] Socket error processing request.

2021-02-24T11:19:15.378747+00:00 app[web.1]: Traceback (most recent call last):

2021-02-24T11:19:15.378748+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 65, in handle

2021-02-24T11:19:15.378748+00:00 app[web.1]:     util.reraise(*sys.exc_info())

2021-02-24T11:19:15.378748+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise

2021-02-24T11:19:15.378749+00:00 app[web.1]:     raise value

2021-02-24T11:19:15.378749+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.8/site-packages/gunicorn/workers/base_async.py", line 38, in handle

2021-02-24T11:19:15.378749+00:00 app[web.1]:     listener_name = listener.getsockname()

2021-02-24T11:19:15.378749+00:00 app[web.1]: OSError: [Errno 9] Bad file descriptor

2021-02-24T11:19:15.379429+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [8] [INFO] Worker exiting (pid: 8)

2021-02-24T11:19:15.443250+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [10] [INFO] Booting worker with pid: 10

2021-02-24T11:19:15.504260+00:00 app[web.1]: [2021-02-24 11:19:15 +0000] [11] [INFO] Booting worker with pid: 11

2021-02-24T11:19:15.615154+00:00 app[web.1]: Staring Server........

2021-02-24T11:19:15.669596+00:00 app[web.1]: Staring Server........

更新:

我已经尝试了https://flask-socketio.readthedocs.io/en/latest/ 中的所有部署选项。 gevent 和 eventlet 似乎都不起作用

【问题讨论】:

  • 尝试在没有 gunicorn 的情况下部署应用程序。成功后,尝试在本地运行 gunicorn。该应用可能与 gunicorn 不兼容。
  • 让我试试
  • 效果很好

标签: python heroku socket.io gunicorn flask-socketio


【解决方案1】:

根据建议,这是 heroku 的问题,而不是 gunicorn 或 eventlet。修复该问题后,eventlet gunicorn 不合作。所以最后对于heroku,我切换到了uwsgi。 heroku 上的 ws 与 gunicorn 存在一些不兼容问题。

【讨论】:

    【解决方案2】:

    你试过了吗

    web: gunicorn --worker-class eventlet -w 1 ...
    

    当我没有设置-w 1 选项时,我经常会遇到错误。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 2023-03-20
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多