Я пытаюсь создать приложение, которое максимизирует выходной поток пользователя, непрерывно отправляя данные. Существует ли переменная, указывающая, сколько байтов находится в буфере out? И я говорю «out buffer», но есть ли лучший термин для данных, которые буферизуются до его отправки клиенту? Правильно ли я это делаю? Это не кажется практичным для self.transport.write() 100 мегабайт.отправка случайных данных с помощью Twisted
1
A
ответ
2
Путь Twisted предоставляет эту информацию с помощью пары API, обычно называемых «производители» и «потребители». Вы можете найти a document о них на сайте 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)
Это отправит случайные данные на клиента как можно быстрее.
Смежные вопросы
- 1. Отправка произвольных данных с помощью Twisted
- 2. Проблема с Twisted python - отправка двоичных данных
- 3. Twisted - Отправка файловой иерархии
- 4. Отправка больших файлов в Twisted
- 5. Отправка StringIO в Twisted FileSender
- 6. Динамическая отправка URL с Twisted ReverseProxyResource
- 7. отправка данных между сервером и клиентом в twisted
- 8. Отправка данных, полученных в одной фабрике Twisted, на вторую фабрику
- 9. Отправка данных из одного протокола в другой протокол в Twisted?
- 10. Отправка данных с помощью потоков
- 11. Отправка данных с помощью Ajax
- 12. Отправка данных с помощью переключателей
- 13. Отправка данных с помощью curl
- 14. Отправка данных с помощью AJAX
- 15. Отправка данных с помощью Guzzle
- 16. отправка данных с помощью alljoyn
- 17. Выбор случайных данных с помощью DataMapper
- 18. Тестирование ресурсов http/REST с помощью Twisted in Twisted
- 19. Отправка на стороне сервера с использованием blender и twisted (python)
- 20. Как связаться с процессом с помощью Twisted?
- 21. Отправка входных данных без форм с помощью
- 22. Отправка данных POST с помощью запроса GET?
- 23. отправка части данных с помощью zigbee
- 24. Отправка данных в Jmeter с помощью Websocket
- 25. Отправка двоичных данных с помощью клиента Restlet
- 26. Отправка данных контроллеру с помощью form_for
- 27. Отправка данных формы с помощью ajax javascript
- 28. Отправка двоичных данных с помощью (C#)
- 29. Отправка нескольких данных с помощью SMTP
- 30. Отправка данных через USB с помощью PyUSB