1
任务间通信我有,目前执行以下操作的客户:使用DeferredQueue在扭曲
- 连接
- 收集一些数据在本地
- 把数据发送到服务器
- 重复
- 如果断开,重新连接并继续上述(未示出)
像这样:
def do_send(self):
def get_data():
# do something
return data
def send_data(data)
self.sendMessage(data)
return deferToThread(get_data).addCallback(send_data)
def connectionMade(self):
WebSocketClientProtocol.connectionMade(self)
self.sender = task.LoopingCall(self.do_send)
self.sender.start(60)
然而,在断开连接时,我想数据收集继续,可能排队,写在一定的限制文件。我已经回顾了DeferredQueue对象,看起来像我需要的,但我似乎无法破解它。
在伪代码,它会去是这样的:
queue = DeferredQueue
# in a separate class from the client protocol
def start_data_collection():
self.collecter = task.LoopingCall(self.get_data)
self.sender.start(60)
def get_data()
# do something
queue.put(data)
然后让客户端协议检查队列,这是我迷路。 DeferredQueue是我需要的,还是有更好的方法?