如何使用Redis在Django通道中异步迭代Websocket客户端队列?

时间:2018-10-23 02:47:14

标签: python django websocket redis django-channels

请考虑以下情形:

01)带有PostgreSQL的PHP​​服务器又称为 PHP

02)具有Django Channels 2和Redis的Python。 PYTHON

03)移动Websocket客户端又称为客户端

  1. PYTHON 具有多个通过网络套接字(在内存中)连接的客户端

  2. PHP 打开与 PYTHON 的Websocket连接,询问:给我一个最接近的客户的列表。 PYTHON 使用 PHP

  3. 在内存中存储此连接
  4. PYTHON 将这些客户端组织在队列中,并存储在 REDIS 中。准备就绪队列之后, PYTHON 将此作业(来自 PHP 的数据)提供给队列的第一个客户端。

  5. 如果客户回答yes PYTHON 收到回答,然后通知 PHP ,此过程就完成了。如果客户回答“否”,则 PYTHON 将使下一个客户排队。 这是我的问题:如果客户没有回答?还是断开连接?我需要超时并找到一种方法来转到队列中的下一个项目。这是问题吗?如何在不可用的客户端中弹出队列,并将作业提供给下一个项目?

我设置了一个外部Python,使用__keyspace@0__代码来监听__keyevents@0__while True:(到期)……但是这很令人困惑。我还考虑过channel_layer和groups ...,但是不能将循环(流)的控制锁定到客户端,而只能锁定为 PYTHON 本身。

什么是最好的方法? Django频道工作者?独立的发布/订阅客户?在工作人员中设置发布/订阅?第三项服务?列出要在channel_layer中过期的事件?我在这里很盲目

0 个答案:

没有答案