A simple Celery-like transactional task queue for Django
Project description
A short and simple Celery replacement for my Django projects.
Database is the only backend. The task is a simple Django model, it uses the same transaction and connection as other models. No more transaction.on_commit hooks to schedule tasks.
Tasks do not produce any results and there is no “result backend”. If you need to store results, pass a unique key into the task and store the result in some DIY model.
You can not wait on the response from the task, there is no get or join to get the task result. I think a thread pool or process pool is better for those requirements.
No workflows and chaining of jobs.
ETA (estimated time of arrival) is a first-class citizen. It does not depend on whether backends support the feature or not.
The worker is a single-threaded process, you start several of those to scale. I have seen too many issues with autoscaling workers, worker processes killed by OS, workers stuck: simple is better.
No prefetching or visibility timeouts. The worker picks the first available task and processes it.
Dead letter queue built in. You get access to failed tasks and can retry them.
Django admin for monitoring. You can view pending tasks, failed, and “dirty” (crashed in the middle of work). Failed and “dirty” tasks can be retried from the same Django admin.
Easy to get the metrics from Django shell and export to your favorite monitoring tool
Task records are removed after successful execution. Unlike Celery SQLAlchemy’s backend, records are removed so you don’t have to care about archiving. It also keeps the table small, properly indexed and efficient.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django_transactional_task_queue-0.1.5.tar.gz
.
File metadata
- Download URL: django_transactional_task_queue-0.1.5.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f1aabe5d98f15afaa27adae9e8614ae5a301cf7ba4be318148bd0beeefe7d24 |
|
MD5 | f5e98ea43b1d9037b812eabf837f330b |
|
BLAKE2b-256 | 3aaefe2606b8299852d12187dd78159e91ea69825b9b4a46892ceff94b70e9f1 |