有没有办法使用Django频道建立一个交互式终端及其当前的限制?

时间:2017-09-15 19:22:01

标签: django websocket django-channels daphne

似乎Django频道每次在websocket上发生任何事情都没有持久状态。即使在相同的websocket连接中,也无法在基于类的使用者的每次receive()调用之间保留任何内容。如果无法将其序列化为channel_session,则无法将其存储。

我假设基于类的使用者将在Web套接字连接期间保持不变。

我尝试构建的是一个简单的终端模拟器,当websocket连接时会创建一个shell会话。读取数据将作为输入传递给shell,shell的输出将传递给websocket。

我找不到在receive()调用之间保留任何内容的方法。看起来他们把所有关于HTTP的坏事都带到了websockets。每次调用conenct()recieve()disconnect()时,都会重新验证整个Consumer类。

所以我错过了一些明显的东西。我可以创建另一个帖子并从组中读取吗?

编辑:可以在下面的评论中找到答案。你可以破解它。频道3.0不会在每次接听电话时实例化消费者。

1 个答案:

答案 0 :(得分:0)

新版本的频道没有此限制。消费者在websocket请求期间一直留在内存中。