Событие, когда данные отправляются в 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 для потребителей и производителей.