Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Oxpull

Developer tooling for Django.

django-ox

Django 6.0 ships the Tasks API but no production backend. The built-in ImmediateBackend and DummyBackend are for development and testing only.

django-ox runs those tasks for real. It keeps the queue in the database you already have and executes it with a worker process. There is no broker to provision, secure, upgrade or back up. And because enqueue() is a plain INSERT on your default connection, a task enqueued inside transaction.atomic() commits or rolls back with your data. No transaction.on_commit() boilerplate.

pip install django-ox

Built for workers that die

A soak and chaos harness ran django-ox 1.1.0 under sustained mixed load on PostgreSQL 16 for 21.5 minutes, 37,804 tasks in all. For nine of those minutes a random worker was SIGKILLed every 20 to 45 seconds: 18 kills and 27 interrupted executions over the run. Every task reached a terminal state, every interrupted execution was re-executed inside the reclaim bound, and the median latency under kills stayed within two milliseconds of the undisturbed baseline. Forty assertions ran and all forty passed. The harness design, every assertion and the caveats are in the soak report, written from the raw data next to it.

A task is retried when it raises and when the worker holding it dies. That is at-least-once execution, so tasks need to be idempotent.

Schedules your operations team can edit

Recurring jobs run on cron or a fixed interval with no scheduler process to deploy or fail over, because every worker dispatches. They can live in settings next to the code, or as rows edited in the Django admin when whoever needs to pause a job cannot ship one.

An admin row picks from the tasks your code has exposed, not a free-text import path, so the permission to edit a schedule is not the permission to run any callable in your project.

What is in the box

A durable queue, retries with backoff, deferred and prioritised tasks, per-attempt timeouts, a process supervisor, the task table in the Django admin, and a Prometheus endpoint. BSD 3-Clause, on Python 3.12+ and Django 5.2 LTS or later.

Repository · Documentation · Choosing a task backend · Changelog

Oxpull Pro

A paid add-on for batches, unique tasks and rate limiting. Pricing and status.

Monitoring is not the paid part. django_ox.stats and the ox_health command are in the BSD package and stay there.

Getting in touch

Bugs and feature requests go in the django-ox issue tracker.