How tivix/django-cron works
django-cron provides configurable recurring Django/Python jobs, with management-command entry points, schedule and lock checks, execution, and persistent run history. The principal flow is an operator or loop invoking runcrons, which resolves configured jobs and delegates each to CronJobManager; the manager decides eligibility, acquires a configurable lock, runs job code, and records outcomes. Logs and locks are also exposed through Django admin. README confirms the broad purpose; sampled source supports the command, manager, models, and cache/database lock relationships, while file locking and notification details are only represented at subsystem level.
Main entry points: core.py Job manager · runcrons.py Run crons · models.py Run logs · lock Lock backends
Components 17
Invocation
Scheduling and execution
- Job manager
django_cron/core.py - Schedule rules
django_cron/core.py - Job code
- Lock selection
django_cron/core.py - Lock backends
django_cron/backends/lock - Failure notifications
django_cron/cron.py
Run state
- Django cache
- Django database
- Run logs
django_cron/models.py - Job locks
django_cron/models.py - Log cleanup
django_cron/management/commands/runcrons.py
Operations
- Django admin
django_cron/admin.py - Duration formatting
django_cron/helpers.py
Other components
- Operator
Connections 22
- Operator → Run crons: invokes
- Operator → Cron loop: starts
- Cron loop → Run crons: dispatches
- Run crons → Configured jobs: resolves
- Run crons → Job manager: creates
- Configured jobs → Job manager: supplies jobs
- Job manager → Schedule rules: checks eligibility
- Job manager → Lock selection: selects lock
- Lock selection → Lock backends: loads backend
- Job manager → Job code: runs job
- Job manager → Run logs: writes outcomes
- Job manager → Lock backends: acquires/releases
- Lock backends → Django cache: uses cache
- Lock backends → Job locks: uses database locks
- Run logs → Django database: persists
- Job locks → Django database: persists
- Run crons → Log cleanup: triggers cleanup
- Log cleanup → Run logs: deletes old entries
- Failure notifications → Run logs: checks failures
- Django admin → Run logs: browses
- Django admin → Job locks: administers
- Django admin → Duration formatting: formats duration