Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 针对多个使用者和单个数据源的设计模式_Python_Design Patterns_Architecture_Rpc_Cherrypy - Fatal编程技术网

Python 针对多个使用者和单个数据源的设计模式

Python 针对多个使用者和单个数据源的设计模式,python,design-patterns,architecture,rpc,cherrypy,Python,Design Patterns,Architecture,Rpc,Cherrypy,我正在为某个硬件设备设计一个web界面,该硬件设备提供自己的自定义API。该web界面可以同时管理多个设备。数据是通过使用自定义API轮询从设备中检索的,因此最好使其异步 最明显的是有一个轮询器线程来轮询数据,用信号量保存到进程范围的单例中,然后web服务器线程将从所述单例中检索数据并显示它。我不太喜欢单例或混搭设计,所以我考虑将轮询器数据源与web服务器分离,在本地接口上循环,并使用XML-RPC之类的东西来使用数据 该应用程序不需要是“enterprisey”或可扩展的,因为它最多只能由几个

我正在为某个硬件设备设计一个web界面,该硬件设备提供自己的自定义API。该web界面可以同时管理多个设备。数据是通过使用自定义API轮询从设备中检索的,因此最好使其异步

最明显的是有一个轮询器线程来轮询数据,用信号量保存到进程范围的单例中,然后web服务器线程将从所述单例中检索数据并显示它。我不太喜欢单例或混搭设计,所以我考虑将轮询器数据源与web服务器分离,在本地接口上循环,并使用XML-RPC之类的东西来使用数据


该应用程序不需要是“enterprisey”或可扩展的,因为它最多只能由几个人一次访问,但我宁愿通过不将两种逻辑混合在一起使其健壮。目前有一个使用CherryPy的python实现,这是我见过的最糟糕的设计。我觉得如果我采用最明显的设计,我最终会以自己的方式重新实现同样可怕的事情

如果使用and,可以创建一个Django项目作为web界面,并创建一个芹菜作业作为后台运行和轮询。在该作业中,您可以导入Django模型,这样就可以非常简单地保存轮询结果。

“单一数据源”!=“可以管理多个设备”对于我来说,这并不重要,因为每个消费者都会将所有数据视为一个整体。有点像如果你建立了一个没有共享的RDMB集群,它仍然是一个单一的数据源。芹菜看起来像是高级解决方案我的问题,非常感谢:)