Функция 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
🏠 Robot Aspirador Shark PowerDetect NeverTouch Pro
#shark
✅ Oferta: 299,99€❌ PVP: 799,99€
Este avanzado robot de limpieza de Shark incorpora la tecnología PowerDetect, capaz de identificar y atacar hasta la suciedad más incrustad. Lo mejor de todo es su innovadora base NeverTouch Pro, que se encarga de vaciar el depósito y realizar el mantenimiento del dispositivo de forma totalmente automática, para que te olvides de la limpieza durante semanas. Ofrece hasta 110 minutos de autonomía, una ptoencia de succión elevadísima y muchísimas tecnologías para mejorar su eficiencia.
➡️https://l.oo34.net/vo0x2BA
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
🧹 Aspiradora de mano sin cable Shark WV200EU
#shark
✅ Oferta: 99,99€❌ PVP: 149,99€
¡Mantén tu casa y tu coche siempre impecables sin esfuerzo! Esta aspiradora de mano de Shark destaca por su diseño súper elegante y ultraligero, pero con una potencia de succión increíble para atrapar el polvo, las migas o el pelo de tus mascotas en cuestión de segundos. Su base la mantiene siempre cargada y lista para la acción.
➡️https://l.oo34.net/y0OK4bz
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
🏠Shark StainForce HX100EUT
#shark
✅Oferta: 169,99€❌PVP: 189,99€
Quitamanchas portátil de la marca Shark, ideal para limpiar líquidos derramadas o manchas del día a día. Es capaz de quitar manchas de café, vino e incluso aceite. Es perfecto para alfombras, tapicerías y para el coche. Viene con un pulverizador de la propia marca, que garantizan que es hasta 30 veces más efectivo que los quitamanchas tradicionales.
➡️https://l.oo34.net/q2zbDZk
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com
👩🏻🦱 Shark FlexStyle | Moldeador y Secador
#shark
✅ Oferta: 236,99€❌ PVP: 299,99€
En el caso de buscar un moldeador y secador, tenemos el Shark FlexStyle, que además viene con dos rizadores de 24 mm de regalo. Con él, seremos capaces de secar, rizar y dar volumen al pelo. Además, viene con varios accesorios (además de un estuche de regalo) con los que podremos aprovechar para moldear el pelo.
➡️https://l.oo34.net/WpP0twi
📣 Síguenos: @compradiccion
📱Síguenos en TikTok: https://www.tiktok.com/@compradiccion
🌎compradiccion.com