Skip to content

Include optional oxpull task coordination in django-ox - #137

Merged
PhiLily merged 1 commit into
mainfrom
task-coordination
Oct 11, 2026
Merged

PhiLily merged 1 commit into
mainfrom
task-coordination

Conversation

@PhiLily

@PhiLily PhiLily commented Oct 11, 2026

Copy link
Copy Markdown
Member

This PR adds the optional oxpull app to django-ox's wheel and sdist under BSD-3-Clause. Previously distributed separately, all its features are now free and open source:

  • Unique tasks: deduplicate pending tasks at enqueue time.
  • Batches: track progress and run a callback once every member settles.
  • Rate limiting: share admission limits across workers.
  • Workflows: express dependencies between tasks, with a provisional API.

See the new Task coordination docs in docs/features/ in this PR.

To enable it on Django 6.0+, keep django_ox in INSTALLED_APPS, add oxpull, set the task backend to oxpull.backend.OxpullBackend, and run migrate. Projects that do not enable the app do not load it. django-ox still supports Django 5.2 through the django-tasks backport.

Settings, import paths, task data, app label, table names, the five oxpull migrations, and persisted task paths stay unchanged. Earlier separate installs must uninstall the earlier oxpull distribution first, then upgrade django-ox, migrate, and restart. Follow the upgrade guide in the "Earlier oxpull installs" section of docs/migrating.md in this PR.

Reviewers can check:

  • Sharded app tests on Django 6.0+ with SQLite, PostgreSQL (plain and pooled), and MySQL.
  • Path-triggered long-running hazard tests, with full runs on release-candidate tags, nightly, and manual dispatch.
  • Opt-in installed-wheel tests covering upgrades from earlier separate installs.
  • One aggregate result check, plus the existing django-ox suite on
    Django 5.2 to 6.1, with added and extended tests for the Django 5.2
    refusal of oxpull, CI path selection, release checks, log event
    documentation, and docs index page URLs, plus type-check settings.

Include the optional `oxpull` app in the django-ox wheel and sdist
under BSD-3-Clause. All features are free and open source.

Provide unique tasks, batches, shared admission rate limits, and
task workflows. The workflows API remains provisional.

Require Django 6.0+ only when the app is enabled. Projects that do
not enable it do not load it. Keep django-ox support for Django 5.2
through the django-tasks backport.

Preserve settings, import paths, task data, the app label, table
names, the five `oxpull` migrations, and persisted task paths.
Align `oxpull.__version__` with `django_ox.__version__`.

Earlier separate installs must uninstall the earlier `oxpull`
distribution first, then upgrade django-ox, migrate, and restart.
Upgrade guide:
https://oxpull.com/django-ox/migrating/#earlier-oxpull-installs

Add sharded app tests on Django 6.0+ with SQLite, PostgreSQL
(plain and pooled), and MySQL. Run long-running hazard tests for
relevant changed paths, and in full on release-candidate tags,
nightly, and manual dispatch.

Add opt-in installed-wheel upgrade tests and a single aggregate
result check. Keep running the existing django-ox suite on Django
5.2 to 6.1. Add and extend tests for the Django 5.2 refusal of
`oxpull`, CI path selection, release checks, log event documentation,
and docs index page URLs. Add type-check settings.
@PhiLily
PhiLily merged commit 1f2035d into main Oct 11, 2026
58 checks passed
@PhiLily
PhiLily deleted the task-coordination branch October 11, 2026 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant