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