tutorial run programming loop has español attribute asyncio async python python-3.x coroutine python-asyncio

run - python async api



¿Cuál es la diferencia entre loop.create_task, asyncio.async/asegurar_future y Task? (1)

Como habrás notado, todos hacen lo mismo.

asyncio.async tuvo que ser reemplazado por asyncio.ensure_future porque en Python> = 3.5, async se ha convertido en una palabra clave [1] .

La razón de ser de create_task BaseEventLoop.create_task(coro) :

Los bucles de eventos de terceros pueden usar su propia subclase de Tarea para la interoperabilidad. En este caso, el tipo de resultado es una subclase de Tarea.

Y esto también significa que no debe crear una Task directamente, ya que diferentes bucles de eventos pueden tener diferentes formas de crear una "tarea".

Editar

Otra diferencia importante es que, además de aceptar coroutines, ensure_future también acepta cualquier objeto que se pueda esperar; create_task por otro lado solo acepta coroutines.

Estoy un poco confundido por algunas funciones asyncio . Veo que hay una función BaseEventLoop.create_task(coro) para programar una co-rutina. La documentación para create_task dice que es una nueva función y, por compatibilidad, deberíamos usar asyncio.async(coro) que al referirme a los documentos que veo de nuevo es un alias para asyncio.ensure_future(coro) que nuevamente programa la ejecución de una co-rutina.

Mientras tanto, he estado usando Task(coro) para programar la ejecución de la co-rutina y eso también parece estar funcionando bien. Entonces, ¿cuál es la diferencia entre todos estos?