请考虑以下情形:
01)带有PostgreSQL的PHP服务器又称为 PHP
02)具有Django Channels 2和Redis的Python。 PYTHON
03)移动Websocket客户端又称为客户端
PYTHON 具有多个通过网络套接字(在内存中)连接的客户端。
PHP 打开与 PYTHON 的Websocket连接,询问:给我一个最接近的客户的列表。 PYTHON 使用 PHP
PYTHON 将这些客户端组织在队列中,并存储在 REDIS 中。准备就绪队列之后, PYTHON 将此作业(来自 PHP 的数据)提供给队列的第一个客户端。
如果客户回答yes
, PYTHON 收到回答,然后通知 PHP ,此过程就完成了。如果客户回答“否”,则 PYTHON 将使下一个客户排队。 这是我的问题:如果客户没有回答?还是断开连接?我需要超时并找到一种方法来转到队列中的下一个项目。这是问题吗?如何在不可用的客户端中弹出队列,并将作业提供给下一个项目?
我设置了一个外部Python,使用__keyspace@0__
代码来监听__keyevents@0__
和while True:
(到期)……但是这很令人困惑。我还考虑过channel_layer和groups ...,但是不能将循环(流)的控制锁定到客户端,而只能锁定为 PYTHON 本身。
什么是最好的方法? Django频道工作者?独立的发布/订阅客户?在工作人员中设置发布/订阅?第三项服务?列出要在channel_layer中过期的事件?我在这里很盲目