dead simple crontab powered job scheduling for django.
… image:: https://img.shields.io/travis/kraiz/django-crontab/master.svg
:target: https://travis-ci.org/kraiz/django-crontab
… image:: https://img.shields.io/coveralls/kraiz/django-crontab/master.svg
:target: https://coveralls.io/r/kraiz/django-crontab
… image:: https://img.shields.io/pypi/v/django-crontab.svg
:target: https://pypi.python.org/pypi/django-crontab
… image:: https://img.shields.io/pypi/pyversions/django-crontab.svg
:target: https://pypi.python.org/pypi/django-crontab
… image:: https://img.shields.io/pypi/l/django-crontab.svg
:target: https://pypi.python.org/pypi/django-crontab
dead simple crontab powered job scheduling for django (1.8-2.0).
install via pip:
… code:: bash
pip install django-crontab
add it to installed apps in django settings.py:
… code:: python
INSTALLED_APPS = (
'django_crontab',
...
)
now create a new method that should be executed by cron every 5 minutes, f.e. in myapp/cron.py
:
… code:: python
def my_scheduled_job():
pass
now add this to your settings.py:
… code:: python
CRONJOBS = [
('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]
you can also define positional and keyword arguments which let you call django management commands:
… code:: python
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 from CRONJOBS
to crontab (of the user which you are running this command with):
… code:: bash
python manage.py crontab add
show current active jobs of this project:
… code:: bash
python manage.py crontab show
removing all defined jobs is straightforward:
… code:: bash
python manage.py crontab remove
there are a bunch of setting vars to customize behavior. each of them comes with default values that should properly fit. if not, feel free to overwrite.
CRONJOBS
list of jobs, each defined as a tuple:
format 1:
Wikipedia <http://en.wikipedia.org/wiki/Cron#Format>
_ and crontab.guru <https://crontab.guru/examples.html>
_ for more examples)format 2:
NOTE: Run “python manage.py crontab add” each time you change CRONJOBS in any way!
default: []
example:
… code:: python
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_JOBS
CRONTAB_EXECUTABLE
CRONTAB_DJANGO_PROJECT_NAME
CRONTAB_DJANGO_MANAGE_PATH
CRONTAB_DJANGO_SETTINGS_MODULE
CRONTAB_PYTHON_EXECUTABLE
add
the jobs (via ‘python manage.py crontab add’)CRONTAB_COMMAND_PREFIX
CRONTAB_COMMAND_SUFFIX
CRONTAB_COMMENT
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?
Will it work within a docker?
Problems with pyenv
?
#60 </../../issues/60>
_I’m getting “bad command”/“errors in cronfile” while installing via “crontab add”. What’s wrong?
CRONJOBS
. (see #23)Why does the LOGGING not work when started via cronjob?
#31 </../../issues/31>
_)MIT-License, see LICENSE file.