Ich verwende aiohttp, um einen API-Server zu erstellen, der TCP-Anfragen an einen separaten Server sendet. Das Modul, das die TCP-Anfragen sendet, ist synchron und für meine Zwecke eine Blackbox. Mein
Problem ist also, dass diese Anfragen die gesamte API blockieren. Ich brauche eine Möglichkeit, die Modulanforderungen in eine asynchrone Coroutine zu packen, die den Rest der API nicht blockiert.
Wenn ich also nur „sleep“ als einfaches Beispiel verwende, gibt es eine Möglichkeit, zeitaufwändigen synchronen Code irgendwie in eine nicht blockierende Coroutine zu packen, etwa so:
Code: Select all
async def sleep_async(delay):
# After calling sleep, loop should be released until sleep is done
yield sleep(delay)
return 'I slept asynchronously'