BufferedProtocol python3 основан на TCP? то есть я должен реализовать стороны TCP тоже или об этом позаботились? - PullRequest
0 голосов
/ 03 мая 2020

Я имею в виду следующее: https://docs.python.org/3/library/asyncio-protocol.html#asyncio .BufferedProtocol

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

Кажется, это подразумевает, что это модификация asyncio.Protocol (для TCP), но, учитывая, что TCP не упоминается для BufferedProtocol, меня беспокоит, что мне придется бороться с не в порядке пакеты et c.

Большое спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

BufferedProtocol не является протоколом на основе TCP, это интерфейс (базовый класс) для пользовательской реализации асинхронных протоколов , особенно тех, которые пытаются минимизировать количество копирования. строка документа предоставляет более подробную информацию:

Идея BufferedProtocol заключается в том, что она позволяет вручную распределять и контролировать приемный буфер. Циклы событий могут затем использовать буфер, предоставленный протоколом, чтобы избежать ненужных копий данных. Это может привести к заметному улучшению производительности для протоколов, которые получают большие объемы данных. Сложные протоколы могут выделять буфер только один раз во время создания.

В настоящее время ни один из протоколов, поставляемых с asyncio, не получен из BufferedProtocol, поэтому в этом случае используется код пользователя, который должен обеспечить высокую пропускную способность. - подробности см. в BPO и в связанном посте списка рассылки .

видя, что TCP не упоминается для BufferedProtocol, меня это беспокоит с которыми мне придется бороться с пакетами, вышедшими из строя и т. д. c.

Если вы не пишете собственный низкоуровневый асинхронный код, вам вообще не нужно беспокоиться о BufferedProtocol. Обычный асинхронный код TCP вызывает функции, такие как open_connection или start_server, оба из которых обрабатывают потоковую абстракцию поверх сокетов TCP обычным способом (используя буфер, ошибки обработки и т. д. c.).

...