Функция 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 tensions se sont exacerbées le 1er Mai à #Berlin lors d'une marche baptisée « Marche révolutionnaire du 1er Mai », qui a envahi le centre-ville à l'occasion des manifestations annuelles de la Fête du Travail.
Des images montrent des milliers de manifestants défilant dans les rues, brandissant banderoles, drapeaux et pancartes, tout en scandant des slogans. Des unités de police ont ensuite été aperçues en train de surveiller la marche et de se positionner aux principaux points névralgiques.
Cet événement s'inscrivait dans le cadre des manifestations annuelles du 1er Mai en Allemagne, qui mêlent traditionnellement rassemblements syndicaux axés sur les droits des travailleurs et manifestations de rue.
RT en français • Osez questionner !
🤖Des robots-chiens à têtes célèbres exposés dans un musée de #Berlin
Selon Associated Press, des robots-chiens coiffés de têtes de personnalités telles qu'Elon Musk, Mark Zuckerberg, Jeff Bezos ou Pablo Picasso déambulent dans un musée à Berlin. Ces machines capturent leur environnement via des caméras puis génèrent des images inspirées du style associé à chaque figure.
RT en français • Osez questionner !
🇷🇺🇩🇪L'ambassade de Russie à #Berlin exige que l'Allemagne lève l'interdiction d'afficher des symboles de la Victoire les 8 et 9 mai.
Elle souligne que de telles interdictions sont absurdes et cyniques, et visent à restreindre le droit des descendants des soldats soviétiques libérateurs et des citoyens volontaires de commémorer l'anniversaire de la défaite du nazisme.
RT en français • Osez questionner !
⚡️Les tensions se sont exacerbées le 1er Mai à #Berlin lors d'une marche baptisée « Marche révolutionnaire du 1er Mai », qui a envahi le centre-ville à l'occasion des manifestations annuelles de la Fête du Travail.
Des images montrent des milliers de manifestants défilant dans les rues, brandissant banderoles, drapeaux et pancartes, tout en scandant des slogans. Des unités de police ont ensuite été aperçues en train de surveiller la marche et de se positionner aux principaux points névralgiques.
Cet événement s'inscrivait dans le cadre des manifestations annuelles du 1er Mai en Allemagne, qui mêlent traditionnellement rassemblements syndicaux axés sur les droits des travailleurs et manifestations de rue.
RT en français • Osez questionner !
🤖Des robots-chiens à têtes célèbres exposés dans un musée de #Berlin
Selon Associated Press, des robots-chiens coiffés de têtes de personnalités telles qu'Elon Musk, Mark Zuckerberg, Jeff Bezos ou Pablo Picasso déambulent dans un musée à Berlin. Ces machines capturent leur environnement via des caméras puis génèrent des images inspirées du style associé à chaque figure.
RT en français • Osez questionner !