Отдельно разберём 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
📊#DATO
Todos los hat-tricks en la historia de la Selección Vinotinto 🇻🇪
📍23.12.1946: Andrés Sucre (a Guatemala)
📍26.12.1946: Víctor García (a Puerto Rico)
📍10.11.2016: Josef Martínez (a Bolivia)
📍19.11.2019: Salomón Rondón (a Japón)
📍28.01.2022: Salomón Rondón (a Bolivia)
🗞 | Mister Chip |
@FootballTimeall
📊#DATO
David Alaba (28), Benzema (28), Kroos (25), Marcelo (24) y Modric (23) son los jugadores del Real Madrid con más trofeos en su carrera.
@FootballTimeall
📊#DATO
🇰🇷Son Heung-Min anotó su gol número 75 en la Premier League con los Spurs; su quinto esta temporada y tres más que cualquier otro jugador de los Spurs.
@FootballTimeall
📊#DATO
🇧🇦Edin Dzeko ha marcado 5 goles en los primeros 4 partidos del Inter como local.
📍Solo dos delanteros interistas lo consiguieron antes: Mauro Icardi en la 2017/18 y Marco Branca en la 1995/96.
@FootballTimeall
📊#DATO
🇵🇪Pedro Aquino es el volante con más quites de balón [28] en las Eliminatorias Conmebol Qatar 2022.
A pesar de haber jugado el 55% de los minutos posibles [608'] y encontrarse en el puesto 24° de volantes con más minutos jugados.
@FootballTimeall
📊#DATO
Séptimo gol de Darwis Machís🇻🇪 con La Vinotinto mayor, no marcaba desde el 14/10/2019 contra Trinidad y Tobago.
📍Su primer gol en Eliminatorias.
@FootballTimeall