假设我通过TCP连接快速接收数据。我必须对它进行某种处理。由于我不想阻止反应器线程,我将处理卸载到后台线程。
数据到达的速度比我处理的速度快。如果我将数据放入队列,队列就会无限增长。
有没有办法告诉twisted暂停接收数据?
TCP协议可以强制发件人减速。如果我在处理反应堆线程时会发生这种情况(这不是一个选项,因为周围有其他更好的TCP连接)。
答案 0 :(得分:2)
如果要实现Protocol
的子类,则transport
属性可能是IPushProducer
,这意味着您只需要调用self.transport.pauseProducing()
然后{{1}无论何时你想要它再次开始为你提供数据。如果您只想限价,可以在短暂延迟后使用self.transport.resumeProducing()
致电resumeProducing()
。