สำหรับ background jobs ที่แข็งแกร่งและคงทน (เกินกว่า BackgroundTasks ที่เบาของ FastAPI) คุณใช้ task queue จริง: Celery (มาตรฐานที่ตั้งตัวแล้ว) หรือ ARQ (queue แบบ async-native สมัยใหม่) สิ่งเหล่านี้รันงานหนัก, retryable, ตามกำหนดเวลา ใน worker processes แยกต่างหาก โดยมี broker อย่าง Redis รองรับ
ทำไมไม่ใช้แค่ BackgroundTasks?
BackgroundTasks runs in the web process → NO persistence (lost on crash), NO retries,
NO scheduling, and heavy work ties up the worker. Fine only for quick fire-and-forget.
For durable/critical/heavy/scheduled jobs → use a real task queue (Celery / ARQ).
