Функция 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
Eʼtibor berganmisiz bizda taom bilan bogʻliq koʻp soʻzlarning oʻzagi osh bilan bogʻliq. Masalan: oshqozon, oshxoʻrak, oshqovoq, oshpaz, oshqoshiq, oshtaxta. Men ham baʼzi guruchli taomlarni oshga moslab koʻrdim. Umuman olganda osh haqida post. 😁
#kuchinskiy#osh
@terminchi
🚛 “Temiryo‘lkargo” AJ mas'ul xodimlari Qirg‘izistonning O‘sh shahrida xizmat safarida bo‘ldi.
📌 Safar doirasida:
▪️ 10 gektarda joylashgan “Yuk hovlisi” faoliyati o‘rganildi – kuniga 70–80 vagon/konteyner aylanmasi.
▪️ O‘sh, Qashqar, Qorasuv va Jalolobod stansiyalarida ko‘mirga yuqori talab mavjudligi qayd etildi.
▪️ “Danek Logistics” bilan muzokaralar o‘tkazildi – Xitoydan keladigan yuklarni O‘zbekiston, Turkmaniston va Afg‘onistonga yetkazishda hamkorlikka tayyor.
▪️ Koshgar–Irkishtom–Saritash–O‘sh yo‘nalishidagi terminal faoliyati o‘rganildi – ushbu yo‘nalish “Belt and Road” tashabbusi doirasida yuk yetkazish muddatini 8–10 kundan 2 kunga qisqartirgan.
🤝 Safar davomida qator kelishuvlar va istiqbolli hamkorlik yo‘nalishlari muhokama qilindi.
“Temiryo‘lkargo” AJ – ishonchli hamkor, keng imkoniyatlar!
#Temiryolkargo#Logistika#Osh#Hamkorlik#DanekLogistics#BRI#YukTashish
🚛 Делегация АО “Темирйулкарго” в Кыргызской Республике
📅 Ответственные сотрудники АО “Темирйулкарго” находились с рабочим визитом в городе Ош, Кыргызская Республика.
📌 В рамках визита:
▪️ Изучена деятельность грузового двора, расположенного на площади 10 гектаров — ежедневно обслуживается 70–80 вагонов/контейнеров.
▪️ Отмечен высокий спрос на уголь на станциях Ош, Кашгар, Кара-Суу и Джалал-Абад.
▪️ Проведены переговоры с компанией Danek Logistics, которая выразила готовность к сотрудничеству по доставке грузов из Китая в Узбекистан, Туркменистан и Афганистан через АО “Темирйулкарго”.
▪️ Изучена деятельность терминала на маршруте Кашгар – Иркиштом – Сары-Таш – Ош. Этот маршрут в рамках инициативы “Один пояс, один путь” сократил сроки доставки с 8–10 дней до 2 дней.
🤝 В ходе визита обсуждены перспективные направления сотрудничества и достигнуты ряд договоренностей.
📦 АО “Темирйулкарго” – надежный партнёр с широкими возможностями!
#Temiryulkargo#Логистика#Ош#Сотрудничество#DanekLogistics#BRI#Грузоперевозки
https://t.me/utycargo
utycargo.uz
📱facebook /📱x.com /📱web sayt/📱linkedin.com/📱instagram