Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
🇷🇺🇷🇺🎉Les 8 et 9 mai, un cessez-le-feu est proclamé en l'honneur de la célébration de la #Victoire du peuple soviétique lors de la Grande Guerre patriotique, a annoncé le ministère russe de la Défense.
Les Forces armées russes prendront toutes les mesures nécessaires pour assurer la sécurité des événements festifs. À la suite de cette proclamation de cessez-le-feu, la Russie espère que la partie ukrainienne suivra son exemple, a indiqué le ministère.
RT en français • Osez questionner !
🇷🇺La première répétition générale du défilé de la #Victoire du 9 mai s'est déroulée le 21 avril à Saint-Pétersbourg
RT en français • Osez questionner !
🟢Claude Janvier, écrivain polémiste et analyste politique, fait le point sur la trêve à l'occasion du Jour de la #Victoire.
RT en français • Osez questionner !
🎗Le « Régiment des immortels » dans les stades de football russes a débuté le 6 mai à l’occasion du derby de Coupe entre Spartak et CSKA
Les joueurs, entraîneurs et arbitres sont entrés sur le terrain en brandissant des portraits de leurs proches ayant participé à la Grande Guerre patriotique.
En l'honneur du 81e anniversaire de la #Victoire, l'Union russe de football et le mouvement du Régiment des immortels de Russie, avec le soutien de la Première ligue russe et de la Ligue nationale de football, organisent un programme de commémorations intitulé « Un pour tous : Équipe, Patrie, Victoire ! »
Le coup d’envoi symbolique a été donné par Rem Balakirev, 98 ans, qui a participé aux combats pour la prise de Berlin.
RT en français • Osez questionner !
🎗Le musée de la #Victoire organise son traditionnel grand événement patriotique : « la valse de la Victoire ».
Cet événement est consacré à la célébration du Jour de la Victoire et vise à préserver la mémoire de la Grande Guerre patriotique. Des centaines de participants de tous âges ont pris part à la danse.
RT en français • Osez questionner !
🇷🇺🇷🇺 Les 8 et 9 mai, un cessez-le-feu est proclamé en l'honneur de la célébration de la #Victoire du peuple soviétique lors de la Grande Guerre patriotique, a annoncé le ministère russe de la Défense.
Les Forces armées russes prendront toutes les mesures nécessaires pour assurer la sécurité des événements festifs. À la suite de cette proclamation de cessez-le-feu, la Russie espère que la partie ukrainienne suivra son exemple, a indiqué le ministère.
RT en français • Osez questionner !
📆🥇 Piotr Tolstoï, vice-président de la Douma, s’est rendu sur la Place Rouge avec ses enfants pour qu'ils n'oublient jamais la #Victoire.
RT en français • Osez questionner !
⭐#Russie : des militaires rendent hommage aux vétérans avant le Jour de la #Victoire
Dans le territoire d’Altaï, des militaires russes ont rendu hommage aux vétérans à l’approche du Jour de la Victoire. Accompagnés par un orchestre militaire, des soldats ont défilé devant les habitations d’anciens combattants avec des copies des drapeaux historiques de l’Armée rouge.
L’orchestre a ensuite interprété la chanson russe « Jour de la Victoire » ainsi que d’autres compositions emblématiques de l’époque soviétique.
RT en français • Osez questionner !
🎗🗣Vladimir #Poutine présente ses vœux aux dirigeants et aux peuples de pays étrangers à l’occasion du 81e anniversaire de la #Victoire.
Le président russe a adressé des messages aux dirigeants de l’Azerbaïdjan, de l’Arménie, de la Biélorussie, du Kazakhstan, du Kirghizstan, du Tadjikistan, du Turkménistan, de l’Ouzbékistan, de l’Abkhazie et de l’Ossétie du Sud, ainsi qu’aux peuples de la Géorgie et de la Moldavie.
RT en français • Osez questionner !
🎗#Moscou se prépare pour le 9 Mai
Moscou se prépare à célébrer le 9 Mai – une date sacrée pour des millions de personnes à travers le monde. Mais cette année, cette Fête de la #Victoire se déroule sous haute tension. Menaces de Kiev, silence des Européens et attaques de drones : les autorités russes ont mis en garde le pouvoir ukrainien. Pour en savoir plus, les explications de notre reporter Igor Kourachenko, depuis le centre de la capitale russe.
RT en français • Osez questionner !
Le patriarche Cyrille de #Moscou a célébré une liturgie à la cathédrale des forces armées russes, à l’approche du Jour de la #Victoire.
RT en français • Osez questionner !