Sample Cron Configurations¶
Retry after failure feature¶
You can run cron by passing RETRY_AFTER_FAILURE_MINS param.
This will re-runs not next time runcrons is run, but at least RETRY_AFTER_FAILURE_MINS after last failure:
class MyCronJob(CronJobBase):
RUN_EVERY_MINS = 60 # every hours
RETRY_AFTER_FAILURE_MINS = 5
schedule = Schedule(run_every_mins=RUN_EVERY_MINS, retry_after_failure_mins=RETRY_AFTER_FAILURE_MINS)
Run at times feature¶
You can run cron by passing RUN_EVERY_MINS or RUN_AT_TIMES params.
This will run job every hour:
class MyCronJob(CronJobBase):
RUN_EVERY_MINS = 60 # every hours
schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
This will run job at given hours:
class MyCronJob(CronJobBase):
RUN_AT_TIMES = ['11:30', '14:00', '23:15']
schedule = Schedule(run_at_times=RUN_AT_TIMES)
Hour format is HH:MM (24h clock)
You can also mix up both of these methods:
class MyCronJob(CronJobBase):
RUN_EVERY_MINS = 120 # every 2 hours
RUN_AT_TIMES = ['6:30']
schedule = Schedule(run_every_mins=RUN_EVERY_MINS, run_at_times=RUN_AT_TIMES)
This will run job every 2h plus one run at 6:30.
Allowing parallels runs¶
By deafult parallels runs are not allowed (for security reasons). However if you want enable them just add:
ALLOW_PARALLEL_RUNS = True
in your CronJob class.
Note
Note this requires a caching framework to be installed, as per https://docs.djangoproject.com/en/dev/topics/cache/
If you wish to override which cache is used, put this in your settings file:
DJANGO_CRON_CACHE = 'cron_cache'
FailedRunsNotificationCronJob¶
This example cron check last cron jobs results. If they were unsuccessfull 10 times in row, it sends email to user.
Install required dependencies: ‘Django>=1.5.0’, ‘South>=0.7.2’, ‘django-common>=0.5.1’.
Add ‘django_cron.cron.FailedRunsNotificationCronJob’ to your CRON_CLASSES in settings file.
To set up minimal number of failed runs set up MIN_NUM_FAILURES in your cron class (default = 10). For example:
- class MyCronJob(CronJobBase):
RUN_EVERY_MINS = 10 MIN_NUM_FAILURES = 3
schedule = Schedule(run_every_mins=RUN_EVERY_MINS) code = ‘app.MyCronJob’
- def do(self):
- ... some action here ...
Emails are imported from ADMINS in settings file
To set up email prefix, you must add FAILED_RUNS_CRONJOB_EMAIL_PREFIX in your settings file (default is empty). For example:
FAILED_RUNS_CRONJOB_EMAIL_PREFIX = “[Server check]: ” FailedRunsNotificationCronJob checks every cron from CRON_CLASSES