Async/await proporciona una sintaxis conveniente para la programación asincrónica en Python. Sin embargo, hay situaciones en las que queremos iniciar una operación asincrónica sin esperar a que finalice. Esto a menudo se conoce como "disparar y olvidar".
Python proporciona asyncio.Task, que nos permite crear una tarea que se ejecutará en segundo plano. Usando asyncio.Task, podemos lograr "disparar y olvidar" agregando el siguiente código a nuestro script:
import asyncio async def async_foo(): # Do some asynchronous stuff here # Create a task for async_foo() asyncio.ensure_future(async_foo())
Esto crea una tarea para async_foo() que se ejecutará de forma asíncrona sin bloquear el hilo principal.
Si nuestro script se completa antes de que finalicen todas las tareas, podemos usar el siguiente código para esperar todas las tareas pendientes:
pending_tasks = asyncio.Task.all_tasks() loop.run_until_complete(asyncio.gather(*pending_tasks))
Esto garantiza que todas las tareas se hayan completado antes de que salga el script, evitando advertencias o errores.
En algunos casos, es posible que no queramos esperar a que se completen las tareas. Podemos cancelarlos usando el siguiente código:
for task in pending_tasks: task.cancel() with suppress(asyncio.CancelledError): loop.run_until_complete(task)
Esto cancela las tareas y suprime cualquier error que pueda surgir como resultado de la cancelación.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3