asyncer : une librairie Python pour appeler du code synchrone depuis du code asynchrone

asyncer : une librairie Python pour appeler du code synchrone depuis du code asynchrone

Comment appeler une fonction synchrone depuis une méthode asynchrone en Python ? Qui ne s’est jamais posé la question ? Et bien, nous, si, et nous avons trouvé une solution élégante et de qualité grâce à la librairie asyncer, développée et maintenue par le développeur principal de FastAPI

A quoi ça sert ?

Vous avez développé un projet avec FastAPI utilisant du code synchrone et vous voulez passer vers du code asynchrone facilement ? Asyncer pourra vous aider dans un contexte de migration, vous profiterez alors des co-routine tout en gardant l’usage de votre code précédemment écrit.

Un exemple vaut mieux qu’un long discours (exemple tiré de la documentation officielle)

 

import time

import anyio
from asyncer import asyncify


def do_sync_work(name: str):
    time.sleep(1)
    return f"Hello, {name}"


async def main():
    message = await asyncify(do_sync_work)(name="World")
    print(message)


anyio.run(main)

Ici, grâce à Asyncify, vous pouvez appeler facilement votre méthode do_sync_work et lui passer une liste d’arguments

La librairie va plus loin et propose d’appeler du code asynchrone depuis du code synchrone (code bloquant)

Docker, Python et FastAPI sont dans un bateau
Typer et Python : une solution pour réaliser facilement des applications console
De NextJS à Astrobuild
Value Object : le must-have du développeur