我决定将Twisted用于项目,并开发了一个可以将数据推送到其他计算机上的客户端的服务器。目前我正在使用虚拟数据来测试速度要求,但我现在需要将Twisted接口连接到我的其他Python DAQ应用程序,该应用程序基本上通过不同的传输(例如蓝牙)从各种外部设备收集实时数据(500 Hz)。 (注意:DAQ(数据采集)应用程序与Twisted服务器在同一台计算机上)
由于DAQ应用程序不是Twisted框架的一部分,我想知道将数据传递给Twisted服务器的最有效(最快,最强大,最小延迟)的方法是什么。我考虑使用轻量级数据库,内存缓存,队列甚至Twisted插件,但很难说哪个最合适也最合适。我应该补充说DAQ应用程序是在决定使用Twisted之前开发的,所以我到目前为止认为它与Twisted网络是分开的。
在系统的另一端,客户端,驻留在多台计算机上,我有类似的问题。由于数据流(我发送的数据行,每个大约100个字节),我想将这些数据交给另一个应用程序,该应用程序将为Web应用程序处理这些数据(我更喜欢使用Twisted Web Service,但是不是我的选择!)Web应用程序是用Java编写的。我再一次考虑了上面的选择,但由于我是Twisted的新手,我不确定哪种方法最好。 (注意:Web应用程序与Twisted客户端在同一台计算机上)
任何建议或想法都将不胜感激。
答案 0 :(得分:1)
我的建议是build a simple protocol with twisted's built-in support for AMP;您可以使用implementations of AMP in other languages之一将其连接到任何其他语言或框架。 AMP的设计尽可能简单,因为它只是一个插槽,其中一些长度为前缀的字符串排列成键/值对。
答案 1 :(得分:0)
显然有很多不同的方法可以解决这个问题,但我首先会考虑使用队列将数据传递给Twisted服务器。如果部署众多开源排队工具之一(例如RabbitMQ,ZeroMQ,OpenMQ和其他人的负载),您应该能够使用HTTP之类的通用程序从DAQ产品中编写,然后使用HTTP读入Twisted服务器。如果您不喜欢HTTP,那么可以选择许多替代传输 - 只需确定您要使用的传输,然后将其用作选择排队工具的基础。
这将为您提供极其灵活的解决方案,因为您可以升级或更改任何这些产品,而对整个解决方案中的任何其他产品的影响最小。