在 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