Context and event data are loaded into the MySQL database using a job defined in dashboard/cron.py.
The job approach leverages the django-cron
library.
For local testing, make sure your connection secrets are added (see Configuration) and your VPN is active. Then, with the application running, run this command in a separate terminal.
docker exec -it student_dashboard /bin/bash -c \
"python manage.py migrate django_cron && python manage.py runcrons --force"
After about 30 to 60 seconds, the cron job should have completed and you should have data! In the admin interface, there is a table where you can check the status of the cron job runs.
Note: Cron scheduling functionality settings may be removed in the future, since this responsibility is often handed off to other infrastructure, like an automation server.
By setting a few configuration variables in env.hjson
,
the application can be started up in a separate container with a Unix crontab schedule.
To do this, set IS_CRON_POD
to true
,and then configure CRONTAB_SCHEDULE
and RUN_AT_TIMES
.
For CRONTAB_SCHEDULE
, django-cron
recommends running python manage.py runcrons
every five minutes,
which is the default (*/5 * * * *
) in env.hjson
.
RUN_AT_TIMES
sets when the job will actually kick off.
See start.sh
and cron.py
to see the logic.