Python “dispara e esquece” assíncrono / espera
Às vezes, há alguma operação assíncrona não crítica que precisa acontecer, mas não quero esperar que ela seja concluída. Na implementação de rotineira do Tornado, você pode "disparar e esquecer" uma função assíncrona simplesmente omitindo oyield
palavra-chave.
Eu tenho tentado descobrir como "disparar e esquecer" com o novoasync
/await
sintaxe lançada no Python 3.5. Por exemplo, um trecho de código simplificado:
async def async_foo():
print("Do some stuff asynchronously here...")
def bar():
async_foo() # fire and forget "async_foo()"
bar()
O que acontece, porém, é quebar()
nunca executa e, em vez disso, recebemos um aviso de tempo de execução:
RuntimeWarning: coroutine 'async_foo' was never awaited
async_foo() # fire and forget "async_foo()"