Функция 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
🧽 Универсальный держатель крышек от контейнеров
Простое решение для удобного хранения пластиковых крышек IKEA 365+, Lidl и других брендов — больше никаких потерянных крышечек!
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🧽 Держатель кухонных рулонов
Удобный аксессуар для хранения бумажных полотенец и фольги. Компактная конструкция экономит место на кухне и выглядит стильно!
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
📦 Шаттэр Бокс — Чайная коробка
Просторная элегантная упаковка для чайных наборов, подарков и сувениров. Минималистичный дизайн подойдет для декора интерьера.
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🍥 Контейнер от киндера — пасхальное яйцо, без поддержек
Пасхальная тема теперь доступна в формате 3D! Забавный контейнер-форма в виде яйца Kinder Surprise порадует глаз деталями и облегчит печать благодаря отсутствию опорных элементов.
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🧩 Умикот (версия 58 мм) — планетарная шестерёнка-спирограф для кофе и WDT инструмента
Планетарный механизм для удобного получения фигур Лиссажу, совместимый с кофеваркой эспрессо и техникой распределения кофейной таблетки методом WDT. Инструмент улучшает качество помола и облегчает приготовление идеального напитка.
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🍳 Egg-209
Занимательная форма яйца в стиле хай-тек станет украшением любого интерьера! Отличный выбор для поклонников футуризма и необычных решений.
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Мы в Max | Заказать печать
🧻 Держатель бумажных полотенец: Закрученная форма
Держатель для бумажных полотенец необычной закрученной формы — отличное решение для кухни или ванной комнаты! Изящный дизайн добавляет нотки оригинальности интерьеру и обеспечивает удобное хранение.
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели | Max
📌 Вращающаяся полка для специй
Оригинальная конструкция полки позволяет легко поворачиваться вокруг своей оси, обеспечивая удобный доступ ко всем баночкам со специями. Отличное решение для кухни!
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели для печати | 3D Маркетплейс | Max
🎠 Набор воронок — разные размеры
Набор многоразовых пластиковых воронок разных размеров идеально подходит для удобного переливания жидкостей и сыпучих материалов. Идеален для дома, мастерской и кухни! Вы наверное опять накидайте комментов "Зачем? МОЖНО ЖЕ КУПИТЬ", но я одну печатал, пришлось, может и Вам когда то придется...
🔗Скачать:Printables
#️⃣ Категория:#Kitchen@anzar3d
🖨3D модели для печати | 3D Маркетплейс | Max