我正在尝试设计一个系统来处理大量数据并向客户端发送有关其进度的更新。我想为 Web 服务器使用 nginx(谢天谢地,它刚刚开始支持 websockets)和 uwsgi,我正在使用 zeromq 通过系统传递消息。理想情况下,解决方案可以用 Python 编写,但我也愿意使用 Nodejs 甚至 Go 解决方案。
这是我想要实现的流程:
- 客户访问网站并请求处理大量数据。
- 服务器通过 zeromq 将处理任务外包给另一个进程/服务器 [worker],并回复客户端请求,解释处理已经开始,包括有关如何与服务器设置 websocket 的信息。
- 客户端建立 websocket 连接并等待更新。
- 处理完成后,工作人员发送“处理完成!”通过 zeromq 将消息发送给 websocket 进程,websocket 进程将消息向下推送到客户端。
我描述的可能吗?我想我在想我可以在 emperor 模式下运行 uwsgi,这样它就可以为 web 服务器处理一个进程(端口),为 websocket 进程处理另一个进程(端口)。我只是不确定我是否可以找到一种方法来从同一进程接收 zeromq 消息和管理 websocket 连接。也许我必须从 worker 发起最后的 websocket 推送?
任何帮助/正确方向指向/潜在解决方案将不胜感激。任何带有正确路由的 websockets 的 nginx 配置文件的示例或片段也将受到赞赏。
谢谢!
最佳答案
当然,这应该是可能的。你可能想看看 zerogw .
关于python - 由 zeromq 触发的 nginx 背后的 Websockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15287196/