Отдельно разберём 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
🇬🇧🇮🇷 Des milliers de personnes ont défilé samedi à Londres pour protester contre l'offensive militaire menée par les États-Unis et Israël contre l'Iran.
Un cortège de deux kilomètres, parti de la tour Millbank à Westminster, a traversé la capitale britannique avant de se rassembler devant l'ambassade des États-Unis, a constaté un correspondant de TASS.
#royaumeuni#manifestations#iran
🇮🇱 Les forces de l’ordre ont dispersé des manifestations anti-guerre en Israël. En conséquence, 18 personnes ont été interpellées, a signalé le service de presse de la police israélienne.
#israël#police#manifestations
🇩🇪 Plus de 366.000 personnes ont participé aux manifestations du 1er mai en Allemagne, a annoncé la Confédération allemande des syndicats (DGB).
Sous la devise "D'abord nos emplois, ensuite vos profits", 366.710 personnes ont pris part le 1er mai à un total de 413 événements et rassemblements organisés par la Confédération allemande des syndicats,
indique le communiqué.
#allemagne#fête#manifestations
🇬🇧🇮🇷 Des manifestations de plusieurs milliers de personnes contre l’extrême droite et la guerre en Iran ont lieu à Londres
#manifestations#guerre#londres
🇵🇰🇮🇷Des manifestants opposés aux actions des États-Unis envers l’Iran ont tenté de pénétrer dans le consulat américain à Lahore, au Pakistan, a rapporté le journal Dawn.
#pakistan#lahore#manifestations
🇳🇱 Aux Pays-Bas, des manifestations contre le déploiement d'un camp de réfugiés ont lieu pour le quatrième jour consécutif, la police a interpellé treize personnes, rapporte le journal Algemeen Dagblad.
Vidéo: HEAD-POST/Х
#paysbas#manifestations#réfugiés