Spaces:
Paused
Paused
| from typing import Any, Callable | |
| from starlette.background import BackgroundTasks as StarletteBackgroundTasks | |
| from typing_extensions import Annotated, Doc, ParamSpec | |
| P = ParamSpec("P") | |
| class BackgroundTasks(StarletteBackgroundTasks): | |
| """ | |
| A collection of background tasks that will be called after a response has been | |
| sent to the client. | |
| Read more about it in the | |
| [FastAPI docs for Background Tasks](https://fastapi.tiangolo.com/tutorial/background-tasks/). | |
| ## Example | |
| ```python | |
| from fastapi import BackgroundTasks, FastAPI | |
| app = FastAPI() | |
| def write_notification(email: str, message=""): | |
| with open("log.txt", mode="w") as email_file: | |
| content = f"notification for {email}: {message}" | |
| email_file.write(content) | |
| @app.post("/send-notification/{email}") | |
| async def send_notification(email: str, background_tasks: BackgroundTasks): | |
| background_tasks.add_task(write_notification, email, message="some notification") | |
| return {"message": "Notification sent in the background"} | |
| ``` | |
| """ | |
| def add_task( | |
| self, | |
| func: Annotated[ | |
| Callable[P, Any], | |
| Doc( | |
| """ | |
| The function to call after the response is sent. | |
| It can be a regular `def` function or an `async def` function. | |
| """ | |
| ), | |
| ], | |
| *args: P.args, | |
| **kwargs: P.kwargs, | |
| ) -> None: | |
| """ | |
| Add a function to be called in the background after the response is sent. | |
| Read more about it in the | |
| [FastAPI docs for Background Tasks](https://fastapi.tiangolo.com/tutorial/background-tasks/). | |
| """ | |
| return super().add_task(func, *args, **kwargs) | |