TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5078 492
Готовый сокет ещё не содержит всё сообщение

Selector сообщил, что сокет доступен для чтения. Это означает, что можно попробовать прочитать данные, а не что весь запрос уже пришёл.

В разборе модуля selectors показывают небольшой цикл обработки соединений. Сокеты переводят в неблокирующий режим, а данные накапливают в буфере конкретного соединения.

У TCP нет границ сообщений: один recv может вернуть часть запроса или несколько сообщений вместе. Нужен свой способ выделения сообщения — длина, разделитель или формат протокола.

Запись тоже бывает частичной. Неотправленный остаток сохраняют, а ожидание записи включают только при наличии данных. Иначе постоянно готовый к записи сокет может заставить цикл расходовать CPU впустую.

DefaultSelector выбирает доступный механизм платформы, но правила протокола и очистка соединений остаются задачей приложения.

#python #сети
More from @zen_of_python
  1. Oct 18, 2026Таблицы из PDF: локальная библиотека или облачный API Текст из PDF извлечён, а столбцы таб…
  2. Oct 18, 2026Ленивый импорт откладывает не только загрузку модуля В Python 3.15 импорт можно отложить д…
  3. Oct 17, 2026Одинаковые файлы, разные ZIP: почему меняется хеш Два архива распаковываются в одинаковые…
  4. Oct 17, 2026Что проверить при обновлении до Pydantic 2.14 Библиотека добавила поддержку Python 3.15 и…
  5. Oct 17, 2026Почему тесты находят пакет, который забыли положить в сборку При структуре, где пакет лежи…
  6. Oct 16, 2026UTF-8 по умолчанию не перекодирует старые файлы В Python 3.15 текстовый ввод-вывод по умол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →