Функция 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
❓Comment analyser le fait que le porte-parole du #FLA puisse bénéficier d'un large espace médiatique français depuis les attaques de samedi dernier alors que ce n'était pas le cas avant le 25 avril ?
Pour continuer d'évoquer le sujet, nous avons reçu Patrick Mboyo Bakambo, professeur de droit public à l’Université protestante au Congo.
RT en français • Osez questionner !
❓Comment analyser le fait que le porte-parole du #FLA puisse bénéficier d'un large espace médiatique français depuis les attaques de samedi dernier alors que ce n'était pas le cas avant le 25 avril ?
Pour continuer d'évoquer le sujet, nous avons reçu Patrick Mboyo Bakambo, professeur de droit public à l’Université protestante au Congo.
RT en français • Osez questionner !
⏺Les terroristes du #FLA prétendent instaurer la paix, mais sont incapables de coexister
Les membres du FLA tentent de promouvoir une « vie pacifique » dans les zones qu'ils contrôlent, mais comment peuvent-ils prétendre instaurer la paix pour les #Maliens alors qu'ils ne parviennent même pas à vivre en harmonie entre eux ?
RT en français • Osez questionner !
⏺Les médias français blanchissent le #FLA de toute proximité avec le terrorisme
Le Front de libération de l’#Azawad, qui a de nouveau joint ses efforts au groupe al-Qaïda, avec le #JNIM, tente de se distancier de ce dernier en affirmant son attachement aux droits de l’homme. Dans cette grande opération de blanchiment, le groupe armé trouve un appui chez son allié de longue date, dans les médias français.
L’analyse de Maryam Feudjio.
RT en français • Osez questionner !
⏺Les médias français blanchissent le #FLA de toute proximité avec le terrorisme
Le Front de libération de l’#Azawad, qui a de nouveau joint ses efforts au groupe al-Qaïda, avec le #JNIM, tente de se distancier de ce dernier en affirmant son attachement aux droits de l’homme. Dans cette grande opération de blanchiment, le groupe armé trouve un appui chez son allié de longue date, dans les médias français.
L’analyse de Maryam Feudjio.
RT en français • Osez questionner !