python - 使用 Flask 在 WebSocket 连接上读取多处理管道
问题描述
我有一个开发 API,flask
它使用multiprocessing
. 这些进程是无限期地继续运行的监听器,并在发生有趣的事情时做出反应。他们还监视管道消息,以防 API 需要他们做某事。
我还有一个前端,它使用 WebSockets 显示有关 API 的实时信息。现在,我想让我的前端显示有关侦听器的实时信息,但我对如何实现它有点困惑。
pipe.recv()
我正在考虑在请求与前端的 WebSocket 连接时使用 API 端管道继续读取。如果听众发现一些有趣的东西,他们会通过管道将此信息发送到我的 API,然后 API 会发出一个 WebSocket 事件以将此信息发送到前端。
global listeners
listeners = {
"LISTENER_ID": {
"pipe": PIPE_REFERENCE
}
}
@socketio.on('connect', '/servingListenersInformation')
def update_info():
global listeners
listener_id = request.cookies.get("listener_id")
while True:
info = listeners[listener_id]["pipe"].recv()
socketio.emit("updateInfo", info, "/servindListenersInformation")
time.sleep(500)
我主要关心的是 Flask 的性能问题。我知道在生产环境中,Flask 会被一个可以同时处理多个请求/连接的服务器包装。但是一个打开的 WebSocket 连接总是从管道中读取是否太多了?
解决方案
推荐阅读
- java - 获取 nosuchelement 异常
- azure - 连接到 AKS 节点的磁盘过多
- android - 使用 Google Places 提供的 API 密钥无效
- oauth - 删除 OAuth 2 的影响(Facebook/Google 的解决方案)
- java - 使用java读取apache beam中的多个csv文件
- ios - 在 Xcode 11 中生成没有苹果开发者帐户的 ipa
- unity3d - 当我将渲染模式设置为屏幕空间时不显示画布 - 相机
- c++ - 'cut' 输出重定向到 C++ 程序
- typescript - 使用 Angular 8,尝试在通过外部 API 调用接收的模板文件中显示图像
- node.js - 节点创建进程作为核心数