有些事情不值得让用户在窗口前傻等:
- 写审计日志
- 发邮件
- 发通知
- 做轻量后处理
这就是 BackgroundTasks。
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 这类真正任务系统。