Функция 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
😘 New airdrop ~ Ratcoin Network
🟢
💲 Reward: 100,000,000 $RAT worth of (~$1600) ➕ per each get referral: 25,000,000 #RAT ($400)
💎 Presents Ratings: 😀😀😀
🛒 Pre-sale link: Ratcoinrat.network
👑Winners: All Random lucky participants + The top 150 referrals will each get more #RAT tokens.
➡️ Airdrop Bot For RatCoin Network
↪️ Join Telegram Group
↪️ Join Telegram Channel
↪️ Follow Twitter, like and retweet the pinned post.
↪️ Submit your details to the airdrop Bot.
ℹ️ Distribution date: announced by the project After TGE .
Что такое RAT?
RAT (Ram Air Turbine) — это турбина набегающего потока воздуха, предназначенная для аварийного питания самолёта. Она выдвигается автоматически или вручную из фюзеляжа или крыла и начинает вращаться за счёт набегающего потока воздуха.
RAT используется в экстренных случаях, когда выходит из строя основное электроснабжение (например, при отказе обоих двигателей). В таких ситуациях RAT обеспечивает энергией:
⏺авионику
⏺электроприводы,
⏺одну из гидросистем,
⏺систему управления полётом (Fly-by-Wire).
Рейс Air Transat 236 (2001 год) — Airbus A330 потерял топливо из-за утечки и лишился обоих двигателей над Атлантикой. Благодаря автоматическому развертыванию RAT, экипаж смог сохранить контроль над самолётом, выполнить планирование на 120 км и успешно посадить лайнер на Азорских островах. Никто не погиб.
📌Хотя RAT компактная — диаметром около 30–80 см — она способна генерировать десятки киловатт энергии, чтобы спасти самолёт. Однако она не обеспечивает питание всех систем — только критически важных.
RAT — это скрытый герой авиационной безопасности. Хотя она используется крайне редко, наличие этой системы может стать решающим фактором в спасении пассажиров и экипажа в случае полной потери энергии.
Лёгкое небо
#aviation#ГА#RAT
🌎 The naked mole-rat, native to East Africa, can survive for up to 18 minutes without oxygen by switching to a unique sugar-based metabolism. Unlike most mammals, it is also resistant to cancer and feels little pain from acid or capsaicin due to genetic adaptations in its nerve cells. ✨
#mole⚡#rat⚡#adaptation⚡#mammals
👉subscribe Interesting Planet
👉more Channels