Package: django-crontab
aboutdead simple crontab powered job scheduling for django (1.8+).setupinstall via pip:pip install django-crontabadd it to installed apps in django settings.py:INSTALLED_APPS = (
    'django_crontab',
    ...
)now create a new method that should be executed by cron every 5 minutes, f.e. inmyapp/cron.py:def my_scheduled_job():
  passnow add this to your settings.py:CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]you can also define positional and keyword arguments which let you call django management commands:CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.other_scheduled_job', ['arg1', 'arg2'], {'verbose': 0}),
    ('0   4 * * *', 'django.core.management.call_command', ['clearsessions']),
]finally run this command to add all defined jobs fromCRONJOBSto crontab (of the user which you are running this command with):python manage.py crontab addshow current active jobs of this project:python manage.py crontab showremoving all defined jobs is straight forward:python manage.py crontab removeconfigthere are a bunch of setting vars to customize behavior. each of this comes with default values that should properly fit. if not, feel free to overwrite.CRONJOBSlist of jobs, each defined as tuple:format 1:required: cron timing (in usual format:http://en.wikipedia.org/wiki/Cron#Format)required: the python module path to the methodoptional: a job specific suffix (f.e. to redirect out/err to a file, default: ‘’)format 2:required: cron timing (in usual format:http://en.wikipedia.org/wiki/Cron#Format)required: the python module path to the methodoptional: list of positional arguments for the method (default: [])optional: dict of keyword arguments for the method (default: {})optional: a job specific suffix (f.e. to redirect out/err to a file, default: ‘’)NOTE: Run “python manage.py crontab add” each time you change CRONJOBS in any way!default: []example:CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.my_scheduled_job'),

    # format 1
    ('0   0 1 * *', 'myapp.cron.my_scheduled_job', '>> /tmp/scheduled_job.log'),

    # format 2
    ('0   0 1 * *', 'myapp.cron.other_scheduled_job', ['myapp']),
    ('0   0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),
]CRONTAB_LOCK_JOBSprevent starting a job if an old instance of the same job is still runningdefault: Falsesince 0.5.0CRONTAB_EXECUTABLEpath to the crontab executable of your osdefault: ‘/usr/bin/crontab’CRONTAB_DJANGO_PROJECT_NAMEthe name of your django project, used to build path path to manage.py and to mark the jobs in contrab via comment for later removingdefault is read from DJANGO_SETTINGS_MODULE environment variableCRONTAB_DJANGO_MANAGE_PATHpath to manage.py file (including the manage.py itself, i.e. ‘/home/john/web/manage.py’)default is build using DJANGO_PROJECT_NAMECRONTAB_DJANGO_SETTINGS_MODULEdotted python path to the settings module to run the command withdefault is the common one from the environment variable and will not be overwrittensince 0.6.0CRONTAB_PYTHON_EXECUTABLEpath to the python interpreter executable used to run the scheduled jobdefault uses the interpreter executable used toaddthe jobs (via ‘python manage.py crontab add’)CRONTAB_COMMAND_PREFIXsomething you wanne do or declare before each job gets executed. A good point for environment variables.default: ‘’ (empty string)example: ‘STAGE=production’CRONTAB_COMMAND_SUFFIXsomething you wanne do after each job was executed.default: ‘’ (empty string)example: ‘2>&1’CRONTAB_COMMENTused for marking the added contab-lines for removing, default value includes project name to distinguish multiple projects on the same host and userdefault: ‘django-crontabs for ‘ + CRONTAB_DJANGO_PROJECT_NAMEcontributorsarski cinghiale meric426 justdoit0823 chamakenfaqI’m using this old django version (<1.8) and can’t install this package. What should i do?- Yeah, update django of course (!) or - as you seem to be familiar with old, unsupported versions, install the old version of this package too (it support django 1.3-1.7):pip install django-crontab==0.6.0Will it work with windows?- No.I’m getting “bad command”/”errors in cronfile” while installing via “crontab add”. What’s wrong?- Maybe it’s your cron time format, it can have 5 or 6 fields. Check that your system supports 6 or just define 5 inCRONJOBS. (see #23)licenseMIT-License, see LICENSE file.