在python应用程序中结合websockets和WSGI

2024-05-15 16:36:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个科学实验,大约有24名受试者玩一个回合制的游戏。现在,它是一个带有WSGI接口的Python web应用程序。我想用websockets来增强可用性:当所有玩家完成轮换后,我想通知所有客户更新他们的状态。现在,每个人都必须等待回合超时,或者继续重新加载并等待“回合仍在进行中”错误消息不再出现(有效地,正忙等待)。

我阅读了多个websocket库的文档,了解websockets是如何工作的,但我不确定混合WSGI和websockets的体系结构:我是否可以在同一进程中拥有一个websockets和一个WSGI服务器(如果可以,如何使用真正的任何websockets库),只需从WSGI处理程序调用my_websocket.send_message(),或者我是否应该一个单独的websockets服务器和一些IPC?或者我不应该把它们混在一起?

编辑,6个月后:我最终启动了一个单独的websockets服务器进程(使用Autobahn),而不是将其与WSGI服务器集成。原因是,将它们分开要容易得多,也更干净得多,而且从WSGI进程(服务器到服务器通信)与websockets服务器的对话是直接的,并且在第一次尝试使用websocket-client时就已经完成了。


Tags: 服务器web应用程序游戏wsgi客户websockets进程
1条回答
网友
1楼 · 发布于 2024-05-15 16:36:54

下面是一个实现您所需功能的示例:

它运行一个WSGI web应用程序(在本例中是基于Flask的,但是可以是任何符合WSGI的东西)以及一个WebSocket服务器,位于一个服务器和一个端口下。

您可以从Web处理程序内部发送WS消息。Autobahn还在WebSocket之上提供PubSub,这极大地简化了通知的发送(通过WampServerProtocol.dispatch),就像您的例子一样。

披露:我是《高速公路》的作者,为塔文多工作。

相关问题 更多 >