Flask SocketIO + Gevent - 缓冲来自外部进程的事件

Flask SocketIO + Gevent - buffering events from external processes

我想在我的 Flask 项目中从异步 class 发送套接字。但是当我发送它时,它需要很长时间才能到达 JavaScript。我将其发送为:

socket_io.emit("event_name", {"foo": "bar"}, broadcast=True, namespace="/com")

带有 socketio 的应用初始化为:

app = Flask(__name__, template_folder="templates", static_folder="static", static_url_path="/static")
socketio = SocketIO(app=app, cookie="cookie_name", async_mode=None)

它是由这个命令启动的:

socketio.run(app=app, host="0.0.0.0", port=5000, log_output=False)

我的 Python 库版本是:

# Python == 3.8.5
Flask==1.1.2
Flask-SocketIO==5.0.1
python-engineio==4.0.0
python-socketio==5.04
gevent==20.12.1
gevent-websocket==0.10.1

JavaScript 套接字:v3.0.4

当我在 socket_io 处理程序中通过 emit 命令正常发送套接字时,它工作正常。但是当我想从外部进程发送相同的套接字时,需要很长时间。

有谁知道,我该如何解决这个问题? 谢谢

问题出在猴子补丁和 32 位 Python3 上。我必须安装 64 位 Python3 然后在第一行添加:

import gevent.monkey; gevent.monkey.patch_all()