Twisted предоставляет эту информацию с помощью пары API, обычно называемых «производителями» и «потребителями».Вы можете найти документ о них на сайте Twisted.
В вашем случае, вероятно, уместен "источник информации", поскольку ваши случайные данные, вероятно, не поступают из источника события., но может быть создан по требованию.Примерный набросок может выглядеть примерно так (и, надеюсь, приведенный выше документ объяснит, почему это работает):
from os import urandom
from zope.interface import implements
from twisted.internet.interfaces import IPullProducer
class RandomProducer(object):
implements(IPullProducer)
def __init__(self, consumer):
self.consumer = consumer
def resumeProducing(self):
self.consumer.write(urandom(2 ** 16))
def stopProducing(self):
pass
Так, например, когда соединение установлено, вы можете зарегистрировать этого производителя втранспорт:
from twisted.internet.protocol import Protocol
class RandomProtocol(Protocol):
def connectionMade(self):
self.transport.registerProducer(RandomProducer(self.transport), False)
Это будет посылать случайные данные на клиента как можно быстрее.