2015-11-23 51 views
1

我正在使用Twisted框架編寫TCP/IP服務器。我以小塊發送非常大量的數據流。所以我需要知道我發送的數據何時通過Twisted的緩衝區進入操作系統,操作系統已準備好接收更多數據。發生這種情況時是否有辦法通知?在Twisted Python中發送數據時的事件?

我這樣做是爲了測量網絡吞吐量,所以我生成了無限量的數據。

如果我使用的是普通套接字(不是Twisted),那麼答案就是使用poll()和POLLOUT,但是我想用Twisted來做到這一點。

回答

0

是的。

self.transport.registerProducer(AProducer(), True),然後

from zope.interface import implementer 
from twisted.internet.interfaces import IPushProducer 
@implementer(IPushProducer) 
class AProducer: 
    def pauseProducing(self): 
     "stop producing data; buffers are full" 
    def resumeProducing(self): 
     "resume producing data; buffers have space" 

你可以找到更多的the Twisted documentation for consumers and producers