Achtergrondtaken
Starlette bevat een BackgroundTask-klasse voor lopende achtergrondtaken.
Een achtergrondtaak moet aan het antwoord worden toegevoegd en pas worden uitgevoerd nadat het antwoord is verzonden.
achtergrond taak
Wordt gebruikt om een enkele achtergrondtaak aan het antwoord toe te voegen.
Handtekening: BackgroundTask(func, *args, **kwargs)
Starlette.applicaties importeren vanuit Starlette
Uit starlette.reacties importeren JSONResponse
Van starlette. routing importeren Route
AchtergrondTaak importeren vanuit starlette.background
...
Async def aanmelding (aanvraag):
Data = wacht op aanvraag.json ()
Gebruikersnaam = gegevens ['gebruikersnaam']
Email = gegevens ['email']
Taak = AchtergrondTaak (stuur _ welkom _ e-mail, naar _ adres = e-mail)
Bericht = {'status': 'Signup successful'}
Retourneer JSONResponse (bericht, achtergrond = taak)
Async def send _ welcome _ email (naar _ adres):
...
Routes = [
...
Route ('/ user / signup', eindpunt = signup, methoden = ['POST'])
]
App = Starlette (routes = routes)
achtergrond taak
Wordt gebruikt om meerdere achtergrondtaken aan het antwoord toe te voegen.
Handtekening: BackgroundTasks(tasks=[])
Starlette.applicaties importeren vanuit Starlette
Uit starlette.reacties importeren JSONResponse
AchtergrondTaken importeren vanuit starlette.background
Async def aanmelding (aanvraag):
Data = wacht op aanvraag.json ()
Gebruikersnaam = gegevens ['gebruikersnaam']
Email = gegevens ['email']
Taken = AchtergrondTaken ()
Taak. add _ task (stuur _ welkom _ e-mail, naar _ adres = e-mail)
Tasks.add _ task (stuur _ admin _ melding, gebruikersnaam = gebruikersnaam)
Bericht = {'status': 'Signup successful'}
Geef JSONResponse terug (bericht, achtergrond = taken)
Async def send _ welcome _ email (naar _ adres):
...
Async def send _ admin _ message (gebruikersnaam):
...
Routes = [
Route ('/ user / signup', eindpunt = signup, methoden = ['POST'])
]
App = Starlette (routes = routes)
!!! Belangrijk is dat taken achter elkaar worden uitgevoerd. Als een van de taken een uitzondering genereert, hebben volgende taken geen kans om uit te voeren.