Отдельно разберём 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
Último día de Venta Flash
🙌••• ¡SOLO POR HOY! •••🙌
😎 Todo por 1 MLC 😎
Oferta disponible para los pedidos que se realicen hoy y que tengan estos modelos que compartiremos a continuación👇
Triángulos
2 Margaritas
Romerillo silvestre
Estilos Art Deco
Argollas - Flores
Margaritas XL
Margaritas Mini
Simple
Áureas Tejidas
#enventa
Muy buenas noches ❤🔥🔥
Espero no tengan el mismo calor que yo 😅
Por acá les dejo el resto de los pendientes que se encuentran en stock 🛒🛍️👈🏻
🌼 Jenny
💦 Water
🍃 Hoja
🌎 Tierra
👻 No Face
🐝 Abstract
💥 Abstract 2
Y recuerden que hay descuento del 25% para los pedidos de más de 5 artículos 🛍️@biacoldporcelain
#pendientes#enventa
⚠️‼️VENTA FLASH‼️⚠️
╔═.✵.═════════════════╗
⚠️🅓🅔🅢🅒🅤🅔🅝🅣🅞 del 25%
para todos los pedidos de más de
5 artículos 🛍️⚠️
Las ofertas están disponibles para
pagos en CUP y MLC
╚═════════════════.✵.═╝
Interesados contactar @biacoldporcelain
#pendientes#enventa