BufferedProtocol
не является протоколом на основе TCP, это интерфейс (базовый класс) для пользовательской реализации асинхронных протоколов , особенно тех, которые пытаются минимизировать количество копирования. строка документа предоставляет более подробную информацию:
Идея BufferedProtocol
заключается в том, что она позволяет вручную распределять и контролировать приемный буфер. Циклы событий могут затем использовать буфер, предоставленный протоколом, чтобы избежать ненужных копий данных. Это может привести к заметному улучшению производительности для протоколов, которые получают большие объемы данных. Сложные протоколы могут выделять буфер только один раз во время создания.
В настоящее время ни один из протоколов, поставляемых с asyncio, не получен из BufferedProtocol
, поэтому в этом случае используется код пользователя, который должен обеспечить высокую пропускную способность. - подробности см. в BPO и в связанном посте списка рассылки .
видя, что TCP не упоминается для BufferedProtocol
, меня это беспокоит с которыми мне придется бороться с пакетами, вышедшими из строя и т. д. c.
Если вы не пишете собственный низкоуровневый асинхронный код, вам вообще не нужно беспокоиться о BufferedProtocol
. Обычный асинхронный код TCP вызывает функции, такие как open_connection
или start_server
, оба из которых обрабатывают потоковую абстракцию поверх сокетов TCP обычным способом (используя буфер, ошибки обработки и т. д. c.).