多个消费者与单一数据源的设计模式

4 投票
1 回答
561 浏览
提问于 2025-04-16 03:41

我正在设计一个网页界面,用来控制某种硬件设备,这个设备有自己特定的接口。这个网页界面可以同时管理多个设备。我们通过自定义的接口来获取设备的数据,所以最好能让这个过程是异步的,也就是不阻塞其他操作。

最简单的办法是创建一个专门的线程来定期获取数据,然后把这些数据存储在一个全局的单例对象里,再让网页服务器的线程从这个单例中取数据来显示。我个人不太喜欢单例这种设计,感觉把所有东西都混在一起不好,所以我在想,能不能把获取数据的部分和网页服务器分开,利用本地接口循环连接,并使用像XML-RPC这样的方式来获取数据。

这个应用不需要特别复杂或者能扩展,因为最多也就几个人同时使用。但我希望能让它更稳健,不想把两种逻辑混在一起。目前有一个用Python和CherryPy实现的版本,设计得非常糟糕,我觉得如果我按照最简单的方式来做,最后可能还是会重复实现同样糟糕的设计。

1 个回答

4

如果你使用 DjangoCelery,你可以创建一个Django项目来作为网页界面,同时让Celery在后台运行一个任务来进行轮询。在这个任务中,你可以导入你的Django模型,这样就可以很简单地保存轮询的结果。

撰写回答