Отдельно разберём 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
🇫🇷 Un incendie s’est déclaré dans l’hôtel Bristol, à proximité du palais de l’Élysée à Paris, faisant un blessé et entraînant l’évacuation de 400 personnes, a rapporté BFMTV, citant le maire du VIIIe arrondissement.
#paris#hôtel#incendie
🇱🇧🇮🇱Au moins quatre personnes ont été tuées et dix autres ont été blessées dans une frappe israélienne contre un hôtel du centre de Beyrouth, a rapporté la chaîne de télévision Al Jazeera, citant le ministère libanais de la Santé.
Quatre personnes ont été tuées et dix autres ont été blessées dans une frappe israélienne contre un appartement de l'hôtel Ramada à Beyrouth,
est-il indiqué.
#israël#liban#frappes#hôtel
🇦🇪 Un missile est tombé à côté de l’hôtel cinq étoiles Fairmont The Palm à Dubaï, provoquant un violent incendie sur place, a rapporté à TASS un témoin oculaire.
Il y a eu une forte explosion près de l’hôtel, un incendie s’est déclaré sur place et un énorme panache de fumée noire s’élève. La défense aérienne continue de fonctionner,
a déclaré l’interlocuteur de l’agence.
#dubaï#missile#hôtel
🇵🇰🇺🇸🇮🇷 L’hôtel Serena à Islamabad se prépare à accueillir des délégations des États-Unis et de l’Iran, attendues dans la capitale pakistanaise pour des négociations. C’est ce qu’a indiqué à un correspondant de TASS un employé de l’établissement.
#hôtel#délégations#pourparlers