Отдельно разберём TaskGroup, который пришел на замену gather в Python 3.11.
Ключевые отличия
▫️create_task() возвращает объект asyncio.Task, у которого есть соответствюущие методы управления. То есть у нас больше контроля
▫️это контекстный менеджер, который гарантирует что все таски будут остановлены по выходу из контекста
▫️ошибка автоматически отменяет незавершенные задачи,
▫️except* передает нам ExceptionGroup, в котором каждую ошибку можно обработать отдельно
import asyncio
import random
async def do_it() -> str:
if random.random() < 0.1:
raise ValueError('Oops')
delay = random.uniform(0.5, 1.5)
await asyncio.sleep(delay)
return delay
async def main():
try:
async with asyncio.TaskGroup() as tg:
for _ in range(10):
tasks.append(tg.create_task(do_it()))
for t in tasks:
print(t.result())
except *ValueError as e:
for err in e.exceptions:
print(err)
asyncio.run(main())
Рекомендую изучить страницу Coroutines and Tasks из документации, где представлено больше интересных примеров и механизмов
- таймауты
- отмена задач
- создание задач из другого потока
#async
🎯🎯Excellent 28% Profit on #KERNEL/USDT for all Premium Members
🚀🚀It has crossed all the targets
👁🗨Contact @futurechief to enter the premium group & make daily gains
📰 FRANK OS 1.0 Launches With a Retro Windows 95-Like Desktop
FRANK OS 1.0 debuts with a windowed desktop inspired by Windows 95, running on RP2350 microcontrollers using the FreeRTOS kernel.
🔗 Source: https://linuxiac.com/frank-os-launches-with-a-retro-windows-95-like-desktop/
#kernel
📰 FreeBSD's Rust Kernel Support Could Be Stable Enough To Try This Year
The FreeBSD Project has published their Q4'2025 status report to outline progress made on their software, infrastructure, and other initiatives over the past quarter. Meanwhile among the work to look forward to this year in FreeBSD is getting their Rust kernel driver support up to scratch...
🔗 Source: https://www.phoronix.com/news/FreeBSD-Q4-2025-Status-Report
#kernel