我正在使用twisted来从互联网连接的传感器获取消息,以便将其存储到数据库。
我想检查这些消息而不会干扰这些过程,因为我需要将每条消息与一些基本值进行比较db,如果有些匹配,我需要触发一个警报,这个想法不会阻止任何进程......
我的想法是创建一个新的流程来检查和提醒,但我需要在第一个流程存储消息之后,它会将消息发送到新流程,以便检查并提醒是否需要。
<登记/>
我需要IPC,我想使用ZeroMQ,但也有扭曲的方法与IPC合作,我想如果我使用ZeroMQ,但也许它会弄巧成拙......
你怎么看待我的做法?也许我完全错了?
欢迎任何建议..
由于
PD:此进程将在专用服务器上运行,预期负载为6000 msg /小时,每个1Kb
答案 0 :(得分:3)
所有这些方法都是可能的。我只能抽象地说话,因为我不知道你的申请的精确轮廓。
如果您已经有一个正在运行的应用程序,但它的速度不够快,无法处理您投入的消息数量,那么就找出瓶颈。您持有的两个可能原因是数据库访问或警报触发,因为其中任何一个都可能是同步IO操作。
你如何处理这个问题取决于你的工作量:
答案 1 :(得分:1)
当您收到消息时,请执行以下两项操作:
您不需要消息队列,多个进程,IPC或任何这些东西。例如:
def messageReceived(self, message):
self.checkForAlerts(message).addCallbacks(self.maybeAlert, log.err)
self.saveMessageToDatabase(message).addErrback(log.err)