에듀테크 프로젝트 대시보드
백그라운드 작업
응답을 먼저 돌려주고 뒤에서 이어서 처리 — 이메일 발송, 로그 적재, 캐시 워밍 등.
from fastapi import BackgroundTasks
def write_log(message: str):
with open("log.txt", "a") as f:
f.write(message + "\n")
@app.post("/signup")
def signup(email: str, tasks: BackgroundTasks):
user = create_user(email)
tasks.add_task(write_log, f"signup: {email}")
tasks.add_task(send_welcome_mail, email)
return {"ok": True} # 응답 후 태스크들이 순차 실행됨def get_query(bg: BackgroundTasks, q: str | None = None):
if q:
bg.add_task(record_search, q)
return qasync def 태스크는 응답을 보낸 뒤 같은 이벤트 루프에서 실행됩니다. 무거운 동기 작업은 def 로 정의해 스레드풀로 보내세요.