假设我通过TCP连接接收数据的速度很快。我必须对此进行某种处理。由于我不想阻塞反应堆线程,因此我将处理工作转移到了后台线程。

数据到达的速度比我处理的速度快。如果我将数据放入队列中,队列将无限增长。

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

TCP协议可以强制发送方降低速度。如果我要处理反应堆线程(这不是一个选择,因为周围还有其他性能更好的TCP连接),这将会发生。

最佳答案

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

关于python - 扭曲:放慢数据接收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32075652/

10-12 22:19
查看更多