全书目录

第二篇:FastAPI 完全指南 —— 软件城市政务大厅宇宙

第十七章:后台任务 —— 窗口先把回执给你,慢活去后台工单中心做

1 分钟 134 字 第 63 / 962 个阅读单元

有些事情不值得让用户在窗口前傻等:

  • 写审计日志
  • 发邮件
  • 发通知
  • 做轻量后处理

这就是 BackgroundTasks

py
from fastapi import BackgroundTasks, FastAPI

app = FastAPI()

def write_audit_log(message: str):
    with open("audit.log", "a", encoding="utf-8") as f:
        f.write(message + "\n")

@app.post("/permits/{permit_id}/approve")
async def approve_permit(permit_id: int, background_tasks: BackgroundTasks):
    background_tasks.add_task(write_audit_log, f"permit {permit_id} approved")
    return {"message": "已批准,审计日志稍后写入"}

这类任务适合“轻后台”。如果是重计算、跨机器队列、失败重试、任务编排,那就应该交给 Celery / RQ / Dramatiq 这类真正任务系统。