Python "dispara y olvida" asíncrono / espera
A veces hay que realizar una operación asincrónica no crítica, pero no quiero esperar a que se complete. En la implementación de rutina de Tornado, puede "disparar y olvidar" una función asincrónica simplemente omitiendoyield
palabra clave.
He estado tratando de descubrir cómo "disparar y olvidar" con el nuevoasync
/await
sintaxis lanzada en Python 3.5. Por ejemplo, un fragmento de código simplificado:
async def async_foo():
print("Do some stuff asynchronously here...")
def bar():
async_foo() # fire and forget "async_foo()"
bar()
Lo que pasa es quebar()
nunca se ejecuta y en su lugar recibimos una advertencia de tiempo de ejecución:
RuntimeWarning: coroutine 'async_foo' was never awaited
async_foo() # fire and forget "async_foo()"