ADR-009: Async Tasks
Status
Accepted
Context
IO intensive operations, such as database writes, can block application performance and reduce responsiveness if handled synchronously. Asynchronous task processing allows these operations to be handled efficiently in the background.
Decision
Where possible, IO intensive operations like database writes will be implemented as Celery asynchronous tasks, using Django’s core feature set for worker threads.
Alternatives Considered
Handling all IO operations synchronously within the main application process.
Using alternative asynchronous task processing frameworks.
Consequences
Positive: - Improves application responsiveness and scalability. - Offloads heavy IO operations to background workers. - Leverages Django and Celery’s robust ecosystem and features.
Negative: - Adds operational complexity in managing Celery workers. - Requires contributors to understand asynchronous task patterns.