Aller au contenu

Tâches d'arrière-plan

Starlette contient une classe BackgroundTask pour les tâches d'arrière-plan dans le processus.

Une tâche d'arrière-plan doit être attachée à la réponse et ne sera exécutée qu 'une fois que la réponse aura été envoyée.

Tâches en back-office

Utilisé pour ajouter une seule tâche d'arrière-plan à la réponse.

Signé par: BackgroundTask(func, *args, **kwargs)

de starlette. applications import Starlette
de starlette.responses à import JSONResponse
de starlette.routing Route d'importation
de starlette. background import BackgroundTask


...

async def signup (demande):
    data = await request. json ()
    nom d'utilisateur = données ['nom d'utilisateur']
    Email = données ['email']
    task = BackgroundTask (send_welcome_email, to_address = email)
    message = {'status': 'Signup successful'}
    return JSONResponse (message, background = task)

async def send_welcome_email (to_address):
    ...


Routes =[
    ...
    Route ('/user/signup', endpoint = signup, methods =['POST'])
]

app = Starlette (routes = routes)

Les tâches back-office

Utilisé pour ajouter plusieurs tâches en arrière-plan à une réponse.

Signé par: BackgroundTasks(tasks=[])

de starlette. applications import Starlette
from starlette.responses import JSONResponse
de starlette.background import BackgroundTasks

async def signup(demande):
    data = await request.json()
    nom d'utilisateur = données ['nom d'utilisateur']
    Email = données ['email']
    tasks = BackgroundTasks()
    tasks.add_task(send_welcome_email, to_address=email)
    tasks.add_task(send_admin_notification, username=username)
    message = {'status': 'Signup successful'}
    return JSONResponse(message, background=tasks)

async def send_welcome_email(to_address):
    ...

async def send_admin_notification(nom d'utilisateur):
    ...

Routes = [
    Route('/user/signup', endpoint=signup, methods=['POST'])
]

app = Starlette(routes=routes)

!!! Les tâches importantes sont exécutées dans l'ordre. si l'une des tâches déclenche une exception, les tâches suivantes n'auront aucune chance de s'exécuter.