Фоновые задачи
Starlette включает в себя функцию для фоновых задач внутри процесса BackgroundTask категории.
К ответу должна быть добавлена фоновая задача и выполняться только один раз после отправки ответа.
фоновые задачи
Добавление одной фоновой задачи в ответ.
Подпись: BackgroundTask(func, *args, **kwargs)
from Starlette.applications import Starlette
from starlette. response import JSONResponse
От Starlet.routing Import Route
from starlet.background import BackgroundTask
...
async def signUp(request):
data = await request.json ()
username = data ['username']
email = data ['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)
Задание фоновых
Добавление нескольких фоновых задач в ответ.
Подпись: BackgroundTasks(tasks=[])
from Starlette.applications import Starlette
from starlette. response import JSONResponse
from starlette background import BackgroundTasks
async def signUp(request):
data = await request.json ()
username = data ['username']
email = data ['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 (username):
...
routes = [
Route ('/user/signup', endpoint=signup, methods=['POST'])
]
app = Starlette(routes=routes)
!!! Важные задачи выполняются последовательно. Если одна из задач вызывает исключение, последующие задачи не будут выполнены.