Wie kann ich eine synchrone Funktion in eine asynchrone Coroutine einschließen?Python

Python-Programme
Anonymous
 Wie kann ich eine synchrone Funktion in eine asynchrone Coroutine einschließen?

Post by Anonymous »

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'

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post