z4j Celery-beat scheduler adapter (Apache 2.0)
Project description
z4j-celerybeat
License: Apache 2.0 Status: v1.0.0 - first public release.
The Celery-Beat scheduler adapter for z4j. Surfaces periodic / crontab / one-shot schedules on the dashboard's Schedules page - read, create, update, enable, disable, trigger-now, delete.
Supports both of Celery's scheduling backends:
app.conf.beat_schedule(static config in Python)django_celery_beat.models.PeriodicTask(database-backed, dynamic)
Install
pip install z4j-celery z4j-celerybeat
What it ships on day 1
| Capability | Status |
|---|---|
| List schedules | ✅ |
| Read individual schedule by id | ✅ |
| Create new schedule | ✅ |
| Update (interval, crontab, args, kwargs, enabled flag) | ✅ |
| Enable / disable | ✅ |
| Trigger-now (fire the task immediately outside the schedule) | ✅ |
| Delete | ✅ |
Live sync for django-celery-beat |
✅ (via post_save signal on PeriodicTask) |
Configure
With django-celery-beat (Django projects)
# settings.py
INSTALLED_APPS = [
# ...
"django_celery_beat",
"z4j_django",
]
# The z4j-celerybeat adapter is auto-registered when django_celery_beat
# is on INSTALLED_APPS.
The Schedules page picks up every PeriodicTask row immediately. Edits
flow both ways - dashboard changes are written through to the database,
and changes written directly to the model surface via signals.
With static beat_schedule (non-Django or plain Celery)
# celery_app.py
from celery import Celery
from z4j_bare import install_agent
from z4j_celery import CeleryEngineAdapter
from z4j_celerybeat import CeleryBeatAdapter
app = Celery("myproject", broker="redis://localhost")
app.conf.beat_schedule = {
"cleanup-every-5-minutes": {
"task": "myapp.tasks.cleanup",
"schedule": 300.0,
},
}
install_agent(
engines=[CeleryEngineAdapter(celery_app=app)],
schedulers=[CeleryBeatAdapter(celery_app=app)],
brain_url="https://z4j.internal",
token="z4j_agent_...",
project_id="my-project",
)
Static beat_schedule is read-only by design - you can view, enable,
disable, and trigger-now, but create / update / delete are rejected
because those changes would need to round-trip through a deploy. The
dashboard hides buttons it can't honor.
Reliability
- No exception from the adapter propagates to Celery Beat or Django request handlers.
post_savesignal handlers forPeriodicTaskare wrapped in a top- level try/except - even if the brain is unreachable, the database write is never affected.
Documentation
License
Apache 2.0 - see LICENSE.
Links
- Homepage: https://z4j.com
- Documentation: https://z4j.dev
- Issues: https://github.com/z4jdev/z4j-celerybeat/issues
- Changelog: CHANGELOG.md
- Security:
security@z4j.com(see SECURITY.md)
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file z4j_celerybeat-1.0.1.tar.gz.
File metadata
- Download URL: z4j_celerybeat-1.0.1.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b7b7cbd12be2780bc1baac2c2b31b9e447b976b6dcf08ebb8b6091d011cee4e
|
|
| MD5 |
9b0b42e0cd785e25188388643cd1d353
|
|
| BLAKE2b-256 |
03e94a66f2e93c05d6ece636e1b7d977342c7108df17971c387e9a596e10e2cd
|
File details
Details for the file z4j_celerybeat-1.0.1-py3-none-any.whl.
File metadata
- Download URL: z4j_celerybeat-1.0.1-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b54209fd83d9249f3966ca5aa187f46e6ec488dad3f262a021eb36d25e9533f2
|
|
| MD5 |
fefc209d50afe3b785ab035cac3e00f8
|
|
| BLAKE2b-256 |
1f768e34d466f6ae824df738e0b130ba4268ab0d8126cc48137be470a1e5ecf2
|