TGViewer
Python/ django Python/ django @pythonl · 58.7K subscribers
Post #5215 7.03K
⚡️ ПРИЁМ ДЛЯ ГЛАДКОЙ ПЕРЕДАЧИ ДАННЫХ В ASYNCIO

В сетевом Python можно «мягко» ограничивать скорость передачи данных без троттлинга на уровне сокета.

Приём - отправлять данные кусками и вставлять короткий await asyncio sleep после каждого drain(): это отдаёт управление циклу, даёт шанс другим корутинам и предотвращает монополизацию CPU.

Полезно в высоконагруженных стримерах.


простой «мягкий» троттлинг передачи данных

import asyncio

CHUNK = 32_000

async def send_smooth(writer, data: bytes):
for i in range(0, len(data), CHUNK):
writer.write(data[i:i+CHUNK])
await writer.drain()
await asyncio.sleep(0) # отдаём управление циклу

async def handle(reader, writer):
payload = b"x" * 5_000_000
await send_smooth(writer, payload)
writer.close()
await writer.wait_closed()

async def main():
srv = await asyncio.start_server(handle, "0.0.0.0", 8888)
async with srv:
await srv.serve_forever()

asyncio.run(main())


@pythonl
  • ❤ 13
  • 👍 10
  • 🔥 4
  • 🤩 1
More from @pythonl
  1. Sep 29, 2026🖥 Примеры кода на Python 2026: лучшие практики, разбор и задачи с решениями Python пример…
  2. Sep 28, 2026🚀 Jina-OCR-v1 разбирает целые страницы в Markdown со скоростью 2,57 страницы/с Jina AI пр…
  3. Sep 27, 2026🐍 В Python 3.15 решили мягко «похоронить» re.match() re.match() никуда не удаляют, но для…
  4. Sep 26, 2026⚡️ Qwen-Image за 6 шагов: Viggle ускорили генерацию и редактирование в 5 раз Viggle выложи…
  5. Sep 25, 2026🖥 Заголовки безопасности для FastAPI - одной строкой 🛡️ fastapi-security-headers добавля…
  6. Sep 24, 2026Линтер для инструкций ИИ-агентов LintLang проверяет AGENTS.md, CLAUDE.md, SKILL.md, описан…
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 →