假设我以较快的速率通过TCP连接接收数据。我得对它做些处理。因为我不想阻塞反应堆线程,所以我将处理卸载到后台线程。
数据到达的速度比我处理的要快。如果我将数据放入队列中,队列就会无限增长。
是否有一种方法可以让扭曲的接收数据暂停?
TCP协议可以迫使发送方放慢速度。如果我处理反应堆线程(这不是一个选项,因为还有其他性能更好的TCP连接),就会发生这种情况。
发布于 2015-08-18 18:16:04
如果您正在实现Protocol的一个子类,那么您的transport属性可能是一个IPushProducer,这意味着您只需要在任何时候调用self.transport.pauseProducing(),然后调用self.transport.resumeProducing(),只要您希望它再次为您提供数据。如果您只想限制评级,可以在短暂的延迟后使用reactor.callLater()调用reactor.callLater()。
https://stackoverflow.com/questions/32075652
复制相似问题