在 Twisted Python 中发送数据时的事件?
Event when data sent in Twisted Python?
我正在使用 Twisted 框架编写 TCP/IP 服务器。我正在以小块的形式发送非常大的数据流。所以我需要知道我发送的数据何时通过 Twisted 的缓冲区并进入 OS,并且 OS 已准备好接收更多数据。有没有办法在发生这种情况时得到通知?
我这样做是为了测量网络吞吐量,因此我生成的数据量不受限制。
如果我使用的是普通套接字(不是 Twisted),答案是使用带有 POLLOUT 的 poll(),但我想使用 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
我正在使用 Twisted 框架编写 TCP/IP 服务器。我正在以小块的形式发送非常大的数据流。所以我需要知道我发送的数据何时通过 Twisted 的缓冲区并进入 OS,并且 OS 已准备好接收更多数据。有没有办法在发生这种情况时得到通知?
我这样做是为了测量网络吞吐量,因此我生成的数据量不受限制。
如果我使用的是普通套接字(不是 Twisted),答案是使用带有 POLLOUT 的 poll(),但我想使用 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