python - Django、websockets、Tornado,如何让它们通信?

标签 python django websocket tornado

所以我读到,目前使用 Django 实现 websocket 的最佳选择是使用 Tornado 来运行 websocket 服务器。

好的,我明白了。

但是假设我想在 django 应用程序中发生任何情况时通过 websocket 服务器广播消息,例如:网络设备突然离线,我希望网络管理员立即收到通知。

我能想到的自然过程是向设备模型注册一个信号,每当发生有趣的事情时,我必须能够告诉 Tornado:嘿伙计,以广播方式向所有连接的管理员发送一条消息。

但是我该怎么做呢?

也许有某种发布/订阅机制? celery ?

有关于这个东西的文章吗?这非常有趣,但尚未找到任何正确解释的实际用例。

谢谢!

编辑:工作原型(prototype)

在遵循已接受答案中的建议后,我想出了这个: https://github.com/ninuxorg/nodeshot/commit/26373a3478d77a8cc8ac8bbd0c1c45694c26a779

最佳答案

进程之间通信的规范方法是队列(或管道)。我不确定 multiprocessing 包中的队列是否有效。如果这不起作用,您可以在文件系统上创建一个命名管道,并使用 os.mkfifo 通过管道进行通信。

关于python - Django、websockets、Tornado,如何让它们通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012252/

相关文章:

python - 仅当外键存在时才保存内容的标准方法是什么?

Django REST Framework 通过 PK 之外的另一个字段设置相关字段(没有 NestedSerializer)

python - 评分前的后处理交叉验证预测

python - numpy.concatenate 多维数组

python - 仅部分记录保留未转换的数据

python - 在激活Tensorflow程序期间,错误 'NoneType'对象没有属性 'group'。我该如何解决?

python - 相关字段的查询无效: blog_posts_name

spring - 将 Java WebSockets (JSR-356) 与 SpringBoot 集成

java - 如何只向一个用户发送 websocket 消息?

javascript - 泛洪 WebSocket