Tag: 高速公路

处理来自高速通道的消息asynchronous预订,非阻塞

我有一个python“设备”运行在docker集装箱。 它连接到交叉开关路由器,在订阅的频道上接收高速公路/ WAMP事件消息。 当某个事件发布时,我的设备正在调用几秒钟内完成的方法。 现在,我希望它可以跳过或处理收到的同一事件的任何消息,而该方法仍在运行。 我试图通过使用Twisted的@inlinecallback修饰器并在设备上设置“self.busy”标志来实现此目的。 但是它不是立即返回,而是像正常的阻塞方法那样工作,以便传入的消息被一个接一个地处理。 这是我的代码: from autobahn.twisted.wamp import ApplicationSession from twisted.internet.defer import inlineCallbacks class Pixel(ApplicationSession): @inlineCallbacks def onJoin(self, details): yield self.subscribe(self.handler_no_access, 'com.event.no_access') @inlineCallbacks def handler_no_access(self, direction): entries = len(self.handlers['no_access'][direction]) if entries == 0: self.handlers['no_access'][direction].append(direction) result = yield self._handler_no_access() return result else: yield print('handler_no_access: entries not 0: ', self.handlers['no_access']) @inlineCallbacks def _handler_no_access(self): for […]