Событие, когда данные отправляются в Twisted Python?

Я пишу TCP/IP-сервер с использованием Twisted Framework. Я отправляю очень большой поток данных небольшими порциями. Поэтому мне нужно знать, когда отправленные мною данные попали в буферы Twisted и попадают в ОС, и ОС готова для получения дополнительных данных. Есть ли способ получить уведомление, когда это произойдет?

Я делаю это для измерения пропускной способности сети, поэтому я генерирую неограниченное количество данных.

Если бы я использовал обычные сокеты (не Twisted), ответом было бы использовать poll() с POLLOUT для этого, но я хочу сделать это с помощью Twisted.

2 ответа

Есть так называемые производители пуш-пулей. Вам нужно подтолкнуть продюсера, очевидно:)

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

Да.

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 для потребителей и производителей.

Другие вопросы по тегам