1

我正在使用 Twisted 框架编写 TCP/IP 服务器。我正在发送非常大的数据流,小块。所以我需要知道我发送的数据何时通过 Twisted 的缓冲区并进入操作系统,并且操作系统已准备好接收更多数据。有没有办法在发生这种情况时得到通知?

我这样做是为了测量网络吞吐量,所以我正在生成无限量的数据。

如果我使用的是普通套接字(不是 Twisted),答案是使用 poll() 和 POLLOUT,但我想使用 Twisted 来做到这一点。

4

2 回答 2

1

是的。

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"

您可以在面向消费者和生产者的 Twisted 文档中找到更多信息。

于 2015-11-24T05:34:36.030 回答
1

有所谓的推拉生产者。显然,您需要推送生产者:)

http://twistedmatrix.com/documents/13.1.0/core/howto/producers.html

于 2015-11-24T05:43:25.300 回答