如何在Django和Twisted之间实现发布-订阅模式?

3 投票
2 回答
608 浏览
提问于 2025-04-18 00:31

我正在用Python和Autobahn(这是基于Twisted的一个工具)实现一个WebSocket服务器。有什么好的方法可以让我的Autobahn/Twisted服务器知道在我的Django应用程序中发生了什么事情吗?

更具体一点,我正在实现一个通知服务和即时更新服务,能够自动让我的客户端应用程序知道什么时候发生了变化,以及需要更新什么内容。

有没有办法让Django能够“发布”消息到我的Twisted服务器,然后再更新客户端呢?我不太确定这一切应该是什么样子的。

谢谢

2 个回答

0

你有没有听说过autobahn.js这个库?它可以让你直接从浏览器连接到你的websocket后端。这样不仅可以调用autobahn的RPC接口,还可以进行发布/订阅。

http://autobahn.ws/js/

要搭建一个支持RPC接口和发布/订阅的autobahn服务器,这就是基本的做法。当一个客户端连接上来时,服务器会发送它可以访问的RPC接口,然后客户端就可以随意调用这些接口。此外,客户端还可以订阅某个频道,服务器就可以通过发布API把消息推送给所有订阅了这个频道的客户端。如果你还没看到过,可以去看看这里有很多不同配置的例子:github.com/tavendo/AutobahnPython/tree/master/examples/twisted/…

1

进程间通信的方法有很多,可能有几十种甚至上百种。比如,你可以通过在一个进程中运行一个HTTP服务器,然后在另一个进程中使用HTTP客户端来进行通信。

其实,具体选择哪种协议并不是特别重要。你需要的通信方式的具体细节可能会让你更倾向于某种协议。如果你只是想通知对方“发生了某件事”,那么用一个非常简单的协议就足够了。

撰写回答