跳到内容

后台任务 - BackgroundTasks

您可以在路径操作函数或依赖函数中声明一个类型为 BackgroundTasks 的参数,然后您可以使用它来安排在发送响应后执行后台任务。

您可以直接从 fastapi 导入它。

from fastapi import BackgroundTasks

fastapi.BackgroundTasks

BackgroundTasks(tasks=None)

基类: BackgroundTasks

将在响应发送给客户端后调用的后台任务集合。

FastAPI 后台任务文档 中阅读更多内容。

示例

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"}
源代码位于 starlette/background.py
33
34
def __init__(self, tasks: Sequence[BackgroundTask] | None = None):
    self.tasks = list(tasks) if tasks else []

func 实例属性

func = func

args 实例属性

args = args

kwargs 实例属性

kwargs = kwargs

is_async 实例属性

is_async = is_async_callable(func)

tasks 实例属性

tasks = list(tasks) if tasks else []

add_task

add_task(func, *args, **kwargs)

添加一个函数,以便在响应发送后在后台调用。

FastAPI 后台任务文档 中阅读更多内容。

参数 描述
func

响应发送后要调用的函数。

它可以是常规的 def 函数或 async def 函数。

类型: Callable[P, Any]

源代码位于 fastapi/background.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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.org.cn/tutorial/background-tasks/).
    """
    return super().add_task(func, *args, **kwargs)