“Feuer und vergiss” Python async / wait
Manchmal muss ein nicht kritischer asynchroner Vorgang ausgeführt werden, aber ich möchte nicht warten, bis der Vorgang abgeschlossen ist. In der Coroutine-Implementierung von Tornado können Sie eine asynchrone Funktion "abfeuern und vergessen", indem Sie einfach das @ weglasseyield
Stichwort
Ich habe versucht herauszufinden, wie man mit dem neuen @ "feuert und vergisst&quoasync
/await
-Syntax in Python 3.5 veröffentlicht. Zum Beispiel ein vereinfachtes Code-Snippet:
async def async_foo():
print("Do some stuff asynchronously here...")
def bar():
async_foo() # fire and forget "async_foo()"
bar()
Was aber passiert ist, dassbar()
wird nie ausgeführt und stattdessen wird eine Laufzeitwarnung angezeigt:
RuntimeWarning: coroutine 'async_foo' was never awaited
async_foo() # fire and forget "async_foo()"