使用多个工作进程的Python Quart中的Websockets?

3

如何在多个工作进程下使用Python Quart的Websockets?

当我的应用程序跨多个工作进程启动时,是否有广播消息的解决方案 - 例如使用Hypercorn?

我当前是这样启动我的应用程序的:

$ hypercorn -b 127.0.0.1:8000 -w 4 wsgi:app

但是已记录的解决方案是将连接的客户端保存在内存中,而没有办法向其他订阅相同事件的客户端广播。

有什么想法吗?我在考虑使用Redis来实现这一点,但我想要一个更简单的解决方案。


你解决了吗? - Thanasis Mattas
1
是的,我解决了。我正在使用Redis和PUB/SUB来发送消息。每当用户创建WebSocket时,我都会订阅用户期望的事件。然后,当另一个进程发布另一个进程已订阅的消息时,它将接收到该消息并将其发送到FE。一些关键词: asyncio.Queue(), redis PUB/SUB, Quart web sockets - go-pera
1个回答

1

我认为对于这个问题,没有比Redis(或类似的第三方工具)更简单的解决方案。

虽然可以在工作进程之间共享内存来运行Hypercorn,但设置起来并不简单。如果您想尝试,请从这里开始。然而,在某些情况下,您可能会有多台机器上的工作进程,此时共享内存将不再起作用。


感谢@pgjones的回答。我会看一下并尝试使用共享内存。 - go-pera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接