我正在使用Twisted框架編寫TCP/IP服務器。我以小塊發送非常大量的數據流。所以我需要知道我發送的數據何時通過Twisted的緩衝區進入操作系統,操作系統已準備好接收更多數據。發生這種情況時是否有辦法通知?在Twisted Python中發送數據時的事件?
我這樣做是爲了測量網絡吞吐量,所以我生成了無限量的數據。
如果我使用的是普通套接字(不是Twisted),那麼答案就是使用poll()和POLLOUT,但是我想用Twisted來做到這一點。
我正在使用Twisted框架編寫TCP/IP服務器。我以小塊發送非常大量的數據流。所以我需要知道我發送的數據何時通過Twisted的緩衝區進入操作系統,操作系統已準備好接收更多數據。發生這種情況時是否有辦法通知?在Twisted Python中發送數據時的事件?
我這樣做是爲了測量網絡吞吐量,所以我生成了無限量的數據。
如果我使用的是普通套接字(不是Twisted),那麼答案就是使用poll()和POLLOUT,但是我想用Twisted來做到這一點。
是的。
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。
有所謂的推拉生產者。你需要推動生產者,顯然:)
http://twistedmatrix.com/documents/13.1.0/core/howto/producers.html