This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

dead simple crontab powered job scheduling for django

Project Description
.. image::
.. image::
.. image::
.. image::
.. image::
.. image::


dead simple crontab powered job scheduling for django (1.8+).

install via pip::

pip install django-crontab

add it to installed apps in django


now create a new method that should be executed by cron every 5 minutes, f.e. in `myapp/`::

def my_scheduled_job():

now add this to your

('*/5 * * * *', 'myapp.cron.my_scheduled_job')

you can also define positional and keyword arguments which let you call django management commands::

('*/5 * * * *', 'myapp.cron.other_scheduled_job', ['arg1', 'arg2'], {'verbose': 0}),
('0 4 * * *', '', ['clearsessions']),

finally run this command to add all defined jobs from `CRONJOBS` to crontab (of the user which you are running this command with)::

python crontab add

show current active jobs of this project::

python crontab show

removing all defined jobs is straight forward::

python crontab remove

there 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.

- list of jobs, each defined as tuple:

- format 1:

1. required: cron timing (in usual format:
2. required: the python module path to the method
3. optional: a job specific suffix (f.e. to redirect out/err to a file, default: '')

- format 2:

1. required: cron timing (in usual format:
2. required: the python module path to the method
3. optional: list of positional arguments for the method (default: [])
4. optional: dict of keyword arguments for the method (default: {})
5. optional: a job specific suffix (f.e. to redirect out/err to a file, default: '')

- NOTE: Run "python crontab add" each time you change CRONJOBS in any way!
- default: []
- example::

('*/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', '', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),

- prevent starting a job if an old instance of the same job is still running
- default: False
- since 0.5.0

- path to the crontab executable of your os
- default: '/usr/bin/crontab'

- the name of your django project, used to build path path to and to mark the jobs in contrab via comment for later removing
- default is read from DJANGO_SETTINGS_MODULE environment variable

- path to file (including the itself, i.e. '/home/john/web/')
- default is build using DJANGO_PROJECT_NAME

- dotted python path to the settings module to run the command with
- default is the common one from the environment variable and will not be overwritten
- since 0.6.0

- path to the python interpreter executable used to run the scheduled job
- default uses the interpreter executable used to `add` the jobs (via 'python crontab add')

- something you wanne do or declare before each job gets executed. A good point for environment variables.
- default: '' (empty string)
- example: 'STAGE=production'

- something you wanne do after each job was executed.
- default: '' (empty string)
- example: '2>&1'

- used for marking the added contab-lines for removing, default value includes project name to distinguish multiple projects on the same host and user
- default: 'django-crontabs for ' + CRONTAB_DJANGO_PROJECT_NAME

arski cinghiale meric426 justdoit0823 chamaken

* **I'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.0

* **Will 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 in `CRONJOBS`. (see #23)

MIT-License, see LICENSE file.
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django-crontab-0.7.1.tar.gz (7.1 kB) Copy SHA256 Checksum SHA256 Source Mar 7, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting