Функция 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
#MANA/USDT analysis :
#MANA is currently in a correction phase. It is advisable to wait for the price to test the support zone before considering a long entry. With bullish momentum expected to continue, the price is likely to revisit previous highs.
TF : 1W
Entry : $0.4158
Target : $0.8556
SL : $0.3117
#MANA/USDT analysis :
#MANA is currently forming lower lows (LLs) and lower highs (LHs) while trading near the resistance zone. The price is expected to decline from this level and test previous lows. For a short entry, it is advisable to wait for a break below the $0.3370 level.
TF : 1D
Entry : $0.3370
Target : $0.2713
SL : $0.3752
#MANA is currently trading around $0.2843, testing a critical support zone ($0.25 - $0.28).This level previously acted as a strong demand zone in September 2024 before the major uptrend.🔥✅
Further,MANA is testing a critical support zone ($0.25 - $0.28). If buyers hold this level, we could see a bounce toward $0.35 - $0.38. However, a breakdown below $0.25 could lead to a further drop toward $0.20 - $0.22 .🔥✅😍👀✅🔥
#MANA has tested the SR zones and formed upside liquidity. It is forming a correction/HL till golden ratio and took small correction.🔥✅
Further, MANA have potential to go for 500% profit in ALT season .🔥✅😍👀✅🔥😳
💰#MANA has a rising wedge pattern on 6H Time frame,we expect another bullish leg from the Green zone,send it to the next level 🚀
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️