Celery
Distributed task queue for Python — handles background jobs, scheduled tasks, and async processing in web applications
Visit Celery →Celery moves slow work out of the request/response cycle — sending an email, processing an uploaded file, generating a report — into a background worker process, so a web request returns immediately instead of blocking on something that takes seconds or minutes. Tasks get queued (typically via Redis or RabbitMQ as the broker) and workers pick them up independently of the web server.
It also handles scheduled/periodic tasks (Celery Beat) and retries for failed jobs, which is why it remains the default choice for background processing across Django, Flask, and FastAPI projects alike rather than being tied to one framework.
See What Is Celery? Python Task Queues Explained for a full walkthrough of how it works and when it’s overkill.