Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
← К каналу

Structured Concurrency в Python 3.

Structured Concurrency в Python 3.11+ (TaskGroup vs Gather)

Если вы до сих пор используете asyncio.gather() для запуска конкурентных задач, вы, вероятно, теряете контроль над ошибками.

Главная проблема gather: если одна таска падает, остальные продолжают работать (если не стоит return_exceptions=False, который убивает всё сразу, но "грязно"). Плюс, отлавливать несколько ошибок одновременно через try / except - это боль.

В Python 3.11+ (и через trio / anyio раньше) стандартом стала Structured Concurrency через asyncio.TaskGroup.

Как это выглядит:

import asyncio

async def task_fail(name, sec):
await asyncio.sleep(sec)
raise ValueError(f"Error in {name}")

async def task_ok(name, sec):
await asyncio.sleep(sec)
print(f"Task {name} done")

async def main():
try:
async with asyncio.TaskGroup() as tg:
tg.create_task(task_ok("A", 1))
tg.create_task(task_fail("B", 2)) # Упадет через 2 сек
tg.create_task(task_fail("C", 1.5)) # Упадет через 1.5 сек

except* ValueError as eg:
# Обратите внимание на except* (ExceptionGroup)
print(f"Caught errors: {eg.exceptions}")

# Запуск
# asyncio.run(main())
Почему TaskGroup это выбор Middle+:

1. Атомарность скоупа: Если одна задача внутри контекстного менеджера падает, TaskGroup автоматически отменяет (cancel) все остальные запущенные задачи в группе. Вы не оставляете "зомби-процессы" в фоне.

2. Exception Groups: Если упало несколько задач одновременно (или во время отмены), Python соберет их в ExceptionGroup. Конструкция except* позволяет элегантно обрабатывать дерево исключений.

Вывод:
Для скриптов gather сойдет. Для надежных сервисов, где важна консистентность состояния и корректный шатдаун корутин - переезжайте на TaskGroup.

#asyncio #python311 #bestpractices #concurrency

👉 @BookPython
← Предыдущий пост Оптимизация SQL-запросов в Django ORM Сегодня я покажу вам, как оптимизировать … Следующий пост → Списковые включения (list comprehensions) могут содержать несколько операторов f…
Другие главы канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 30.04.2026
У Python очень короткий список встроенных констант. Одна из них — Ellipsis, кото…
👁 528 просмотров
Глава от 29.04.2026
💡10 функций, для продвинутых Python-разработчиков 1. Разворачиваем вложенных с…
👁 695 просмотров
Глава от 28.04.2026
Если вы хотите итерироваться одновременно по нескольким итерируемым объектам, фу…
👁 651 просмотров
Глава от 28.04.2026
❓Как управлять техническим подразделением опытных инженеров и быть сильным и муд…
👁 758 просмотров
Глава от 27.04.2026
Иногда в тестах нужно сравнивать сложные структуры, игнорируя некоторые значения…
👁 1 057 просмотров
Глава от 26.04.2026
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 ht…
👁 1 241 просмотров
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
Удалить этот пост Удалить канал
🔍
Архив всех постов Макс
Поиск по тексту среди 3,445,631 постов из 200,434 каналов. Фильтры по дате, видео, репостам и удалённым публикациям.
1 ₽ — 7 дней доступа
далее 490 ₽/мес
Получить доступ за 1 ₽
или войти, если уже есть аккаунт

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
AntiCloudMod — сообщество для тех, кто ценит свободу общения без облачной цензуры. Здесь обсуждают альтернативные мессенджеры, инструменты для приватности и децентрализов…
👥 232 679 · +148 343/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Всё про технологии, гаджеты и цифровую жизнь: обзоры, лайфхаки, новости. Подписывайся, чтобы быть в курсе!
👥 127 374 · +3 819/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
Информация БПЛА Белгород, Белгородский район — специализированный канал в мессенджере Макс, посвященный новостям и информации о беспилотных летательных аппаратах в регион…
👥 117 241 · +5 102/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 57 371 · +2 344/7д
@hitech
Hi-Tech
Hi-Tech — ваш проводник в мире технологий. Мы оперативно публикуем новости, обзоры гаджетов и собственное видео с тестирований. Следите за трансляциями мировых анонсов и…
👥 54 152 · +2 131/7д
@vilianov
Гаджеты и технологии на Вильянов.Ком
Обзоры цифровой техники и гаджетов от Сергея Вильянова. Более 25 лет помогаю выбирать смартфоны, ноутбуки, наушники и другие устройства, чтобы покупка радовала. Репортажи…
👥 28 674 · -126/7д

Популярные посты канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»

Списковые включения (list comprehensions) могут содержать несколько операторов for и if: In : [(x, y) for x in range(3) for y in range(3)] …
👁 6 260 просмотров
Если у вас есть ресурсоемкая задача для процессора и вы хотите использовать все доступные ядра, то multiprocessing.Pool - это то, что вам ну…
👁 6 240 просмотров
Pytest Patterns: Элегантный Teardown через yield и оптимизация скоупов Если вы все еще пишете def teardown_method(self): в классах тестов, …
👁 6 203 просмотров
Pydantic V2: Забываем root_validator, используем model_validator правильно Переход на Pydantic V2, это не только ускорение за счет ядра на …
👁 6 196 просмотров
Ранее мы затронули типизацию в фикстурах (косвенно), поэтому сегодня поговорим про: Protocol vs ABC: Утиная типизация на стероидах (Static …
👁 6 182 просмотров
Одной из самых непоследовательных частей синтаксиса Python являются литералы кортежей. По сути, чтобы создать кортеж, вы просто пишете знач…
👁 6 158 просмотров
10 полезных библиотек для Python-разработчика Сегодня я подготовил для вас подборку из 10 полезных библиотек, которые могут сделать вашу ра…
👁 6 153 просмотров
📌 Декораторы в Python: как они работают и зачем нужны? Сегодня я покажу вам, как работают декораторы в Python и зачем они вообще нужны. Де…
👁 6 150 просмотров
🐍 Как улучшить читаемость кода в Python? Читаемый код - это не роскошь, а необходимость. Если ваш код трудно понять, даже если он работает,…
👁 6 147 просмотров
⚡ Как ускорить код на Python? Используем map, filter, reduce ⚡ Привет, друзья! Сегодня расскажу о том, как можно ускорить выполнение кода, …
👁 6 142 просмотров
Ловушка замыканий: Почему ваши лямбды в цикле сломаны (Late Binding) Вы пишете код, который генерирует список функций (например, колбэки дл…
👁 6 136 просмотров
Профилируем Python в продакшене: почему cProfile не подходит, и чем хорош py-spy Когда на проде начинает течь память или скачет CPU, первая…
👁 6 101 просмотров
Оптимизация SQL-запросов в Django ORM Сегодня я покажу вам, как оптимизировать SQL-запросы в Django ORM, чтобы ваш код работал быстрее и эф…
👁 6 084 просмотров
🔥 Как ускорить Python-код в 10 раз? Сегодня покажу вам мощный инструмент для оптимизации кода - Numba. Это библиотека, которая позволяет ко…
👁 6 054 просмотров
Оптимизация кода с помощью генераторов в Python Сегодня хочу показать вам, как использование генераторов может сделать ваш код быстрее, э…
👁 6 020 просмотров
Обычно вы взаимодействуете с генератором, запрашивая данные с помощью next(gen). В Python 3 вы также можете отправлять значения обратно в ге…
👁 6 010 просмотров
Python поддерживает несколько способов запуска скрипта. Обычный вариант — это python foo.py; в этом случае foo.py просто выполняется. Однак…
👁 6 003 просмотров
🚀 5 крутых Python-фишек, о которых знают не все Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его воз…
👁 5 985 просмотров
Как быстро очистить список в Python? Сегодня я покажу вам несколько способов очистки списка в Python и расскажу, какой вариант лучше в зави…
👁 5 951 просмотров
Одна и та же строка может быть представлена по-разному в Unicode, и стандарт это учитывает. Он определяет два типа эквивалентности: последо…
👁 5 924 просмотров
🏷 Темы и теги
#asyncio #python311 #bestpractices #concurrency #telegram bots #web scraping #python #django #fastapi #Технологии
📋 О канале Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Погрузись в Python с нуля до PRO: Django, FastAPI, парсинг, Telegram-боты и асинхронность. Практические уроки, код и карьерные советы для веб-разработчиков.
📊 Аналитика канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
📌 Данные подтянутся автоматически по ссылке на канал. Логотип необязателен — ускоряет проверку.
🖼 Перетащите картинку или выберите файл
PNG, JPG, WEBP · до 5 МБ
captcha

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