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.