1.9 KiB
Celery
Celery handles notification delivery, email digests, LDAP retries, task automation, attendance synchronization, guest lifecycle jobs, attachment cleanup and payroll period opening.
Configuration
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
CELERY_BROKER_URL=redis://127.0.0.1:6379/0
CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/1
Tasks use JSON serialization, late acknowledgement, prefetch multiplier 1, a
25-minute soft limit and a 30-minute hard limit. DatabaseScheduler from
django-celery-beat is enabled, while the default periodic schedule is declared
in backend/eusrr_backend/settings.py.
Development
cd backend
celery -A eusrr_backend worker -l info
celery -A eusrr_backend beat -l info
Run worker and Beat as separate processes. Migrations must include
django_celery_beat and django_celery_results.
python manage.py migrate
celery -A eusrr_backend inspect ping
There are no active custom queue routes in the current settings. Do not start a
worker restricted to notifications,emails unless matching routes have first
been configured and tested.
Production
- run one Beat instance only;
- supervise worker and Beat with the deployment platform;
- use an authenticated/private Redis endpoint;
- preserve graceful shutdown so late-acknowledged tasks can finish or be redelivered;
- monitor queue depth, task runtime, retries and worker availability;
- deploy application code, migrations and workers as one compatible release.
Periodic jobs include daily/weekly notification digests, due task notifications,
scheduled task automations, LDAP retry processing, personnel actions, attendance
sync and guest visit maintenance. Check CELERY_BEAT_SCHEDULE for the exact
current names and intervals.
Tests use the in-memory/eager configuration from
backend/eusrr_backend/settings_test.py; tests should not require a live broker
unless they explicitly exercise broker integration.