Scheduled Tasks (Cron Jobs)¶
Scheduled (cron) jobs run on the host and execute Django management commands inside the server container via docker exec. Because Django 6.0's native task framework has no built-in scheduler (only the db_worker for enqueued tasks), all periodic maintenance is driven by host cron.
Production cron jobs¶
| Cron name | Schedule | Command | Purpose |
|---|---|---|---|
| ses-cleanup-remote-seats | daily 03:00 | cleanup_remote_seats |
Release remote-app seats left behind by closed/purged sessions |
| ses-prewarm-due-exams | every 5 min | prewarm_due_exams |
Batch-provision remote-app seats for exams starting soon |
| ses-import-ems-exams | every 5 min | import_ems_exams --scheduled |
Poll external EMS environments for new/updated exams |
| ses-cleanup-sso-sessions | daily 04:00 | cleanup_expired_sso_sessions |
Remove expired SSO sessions and refresh tokens |
| ses-cleanup-db-task-results | daily 04:05 | prune_db_task_results --min-age-days 14 --failed-min-age-days 45 |
Purge finished task results (see Background Tasks) |
Each job appends its output to a log under /var/log (e.g. ses-cleanup.log, ses-task-prune.log).
The background task worker (python manage.py db_worker) is a long-running service started by Docker, not a cron job.