扭曲:减慢接收到的数据

Twisted: Slowing down dataReceived

假设我通过 TCP 连接快速接收数据。我必须对其进行某种处理。因为我不想阻塞反应器线程,所以我将处理卸载到后台线程。

数据到达的速度比我处理它的速度还快。如果我把数据放在队列中,队列会无限增长。

有没有办法告诉twisted暂停接收数据?

TCP 协议可以强制发件人放慢速度。如果我处理反应堆线程(这不是一个选项,因为周围有其他表现更好的 TCP 连接),就会发生这种情况。

如果你正在实现 Protocol 的子类,你的 transport 属性可能是一个 IPushProducer,这意味着你只需要调用 self.transport.pauseProducing() 然后 self.transport.resumeProducing() 每当您希望它再次开始为您提供数据时。如果你只是想限制速率,你可以在短暂的延迟后调用 resumeProducing(),使用 reactor.callLater().