TGViewer
About Python [ru] About Python [ru] @python_tesst · 6.45K subscribers
Post #2778 390
⁣Думай быстрее нуля: uvloop + кастомная policy + zero-cost cancellation под PEP 654

asyncio-код на нагрузке часто тормозит из-за того, что стандартный event loop написан на чистом Python. uvloop решает это в лоб: он на Cython, в основе libuv (тот же движок, что у Node.js). По тестам прирост пропускной способности 2x-4x, задержки падают. Но многие разработчики останавливаются на базовой установке, не выжимая максимум.

Базовая настройка и кастомная policy

Установка — pip install uvloop. Типичная ошибка — просто вызвать asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) и забыть. В production под нагрузкой стоит создать кастомную policy, чтобы сбросить сигнальные хендлеры, которые обычно не нужны, но потребляют память:

class MyPolicy(uvloop.EventLoopPolicy):
def new_event_loop(self):
loop = super().new_event_loop()
loop._signal_handlers.clear()
return loop


Это даёт микрооптимизацию без изменения апи. Трейдофф: если ваш код использует сигналы (например, SIGINT), эта политика их потеряет. Использовать только при уверенности, что сигналы не нужны.

Zero-cost cancellation через PEP 654

PEP 654 (Python 3.11+) завёз ExceptionGroup. Раньше при массовой отмене задач ты делал цикл с task.cancel() и ловил каждый CancelledError. Теперь кидаешь один ExceptionGroup, и это не тянет оверхед на каждую корутину:

async def cancel_group(tasks):
if len(tasks) > 5:
raise ExceptionGroup("Cancelling batch",
[asyncio.CancelledError() for _ in tasks])


Прирост особенно заметен на высоких нагрузках, когда отменять приходится десятками и сотнями. Практический совет: используйте ExceptionGroup для батчевых операций, где отмена или ошибка применима к группе задач, а не к каждой по отдельности.

Вывод: uvloop ускоряет asyncio до уровня libuv, а кастомная policy и zero-cost cancellation через PEP 654 убирают узкие места отмены корутин, что критично для high-load production.
More from @python_tesst
  1. Sep 29, 2026Claude Sonnet 5.5 — уже не слив, релиз официально состоялся Прайс не трогали: $2 за миллио…
  2. Sep 29, 2026Post #3194
  3. Sep 29, 2026Дженсен Хуанг выкатил NVIDIA Open Agent Safety Platform — и притащил с собой 100+ партнеро…
  4. Sep 29, 2026Стикмену теперь под силу снести любой сайт. Чувак под это навайбкодил целую игруху: грузиш…
  5. Sep 28, 2026Post #3191
  6. Sep 27, 2026OpenAI метит в подписку за 500 баксов Что там в описании тарифа? Пока что от ChatGPT Pro о…
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 →