Skip to main content
 首页 » 编程设计

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

2024年11月01日41oomusou

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

好的,我明白了。

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

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

但是我该怎么做呢?

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

有没有关于这东西的文章?这很有趣,但还没有找到任何正确解释的真实用例。

谢谢!

编辑:工作原型(prototype)

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

请您参考如下方法:

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