181 lines
6.5 KiB
Text
181 lines
6.5 KiB
Text
![]() |
Metadata-Version: 2.1
|
||
|
Name: django-crontab
|
||
|
Version: 0.7.1
|
||
|
Summary: dead simple crontab powered job scheduling for django
|
||
|
Home-page: https://github.com/kraiz/django-crontab
|
||
|
Author: Lars Kreisz
|
||
|
Author-email: lars.kreisz@gmail.com
|
||
|
License: MIT
|
||
|
Classifier: Development Status :: 5 - Production/Stable
|
||
|
Classifier: Environment :: Web Environment
|
||
|
Classifier: Framework :: Django
|
||
|
Classifier: Intended Audience :: Developers
|
||
|
Classifier: License :: OSI Approved :: MIT License
|
||
|
Classifier: Natural Language :: English
|
||
|
Classifier: Operating System :: POSIX :: Linux
|
||
|
Classifier: Programming Language :: Python
|
||
|
Classifier: Programming Language :: Python :: 2
|
||
|
Classifier: Programming Language :: Python :: 2.7
|
||
|
Classifier: Programming Language :: Python :: 3
|
||
|
Classifier: Programming Language :: Python :: 3.3
|
||
|
Classifier: Programming Language :: Python :: 3.4
|
||
|
Classifier: Programming Language :: Python :: 3.5
|
||
|
Classifier: Topic :: System :: Installation/Setup
|
||
|
|
||
|
.. 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/dw/django-crontab.svg
|
||
|
:target: https://pypi.python.org/pypi/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
|
||
|
|
||
|
about
|
||
|
=====
|
||
|
|
||
|
dead simple crontab powered job scheduling for django (1.8+).
|
||
|
|
||
|
setup
|
||
|
=====
|
||
|
install via pip::
|
||
|
|
||
|
pip install django-crontab
|
||
|
|
||
|
add 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. in `myapp/cron.py`::
|
||
|
|
||
|
def my_scheduled_job():
|
||
|
pass
|
||
|
|
||
|
now 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 from `CRONJOBS` to crontab (of the user which you are running this command with)::
|
||
|
|
||
|
python manage.py crontab add
|
||
|
|
||
|
show current active jobs of this project::
|
||
|
|
||
|
python manage.py crontab show
|
||
|
|
||
|
removing all defined jobs is straight forward::
|
||
|
|
||
|
python manage.py crontab remove
|
||
|
|
||
|
config
|
||
|
======
|
||
|
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.
|
||
|
|
||
|
CRONJOBS
|
||
|
- list of jobs, each defined as tuple:
|
||
|
|
||
|
- format 1:
|
||
|
|
||
|
1. required: cron timing (in usual format: http://en.wikipedia.org/wiki/Cron#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: http://en.wikipedia.org/wiki/Cron#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 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_JOBS
|
||
|
- prevent starting a job if an old instance of the same job is still running
|
||
|
- default: False
|
||
|
- since 0.5.0
|
||
|
|
||
|
CRONTAB_EXECUTABLE
|
||
|
- path to the crontab executable of your os
|
||
|
- default: '/usr/bin/crontab'
|
||
|
|
||
|
CRONTAB_DJANGO_PROJECT_NAME
|
||
|
- the name of your django project, used to build path path to manage.py and to mark the jobs in contrab via comment for later removing
|
||
|
- default is read from DJANGO_SETTINGS_MODULE environment variable
|
||
|
|
||
|
CRONTAB_DJANGO_MANAGE_PATH
|
||
|
- path to manage.py file (including the manage.py itself, i.e. '/home/john/web/manage.py')
|
||
|
- default is build using DJANGO_PROJECT_NAME
|
||
|
|
||
|
CRONTAB_DJANGO_SETTINGS_MODULE
|
||
|
- 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
|
||
|
|
||
|
CRONTAB_PYTHON_EXECUTABLE
|
||
|
- path to the python interpreter executable used to run the scheduled job
|
||
|
- default uses the interpreter executable used to `add` the jobs (via 'python manage.py crontab add')
|
||
|
|
||
|
CRONTAB_COMMAND_PREFIX
|
||
|
- something you wanne do or declare before each job gets executed. A good point for environment variables.
|
||
|
- default: '' (empty string)
|
||
|
- example: 'STAGE=production'
|
||
|
|
||
|
CRONTAB_COMMAND_SUFFIX
|
||
|
- something you wanne do after each job was executed.
|
||
|
- default: '' (empty string)
|
||
|
- example: '2>&1'
|
||
|
|
||
|
CRONTAB_COMMENT
|
||
|
- 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
|
||
|
|
||
|
contributors
|
||
|
============
|
||
|
arski cinghiale meric426 justdoit0823 chamaken
|
||
|
|
||
|
faq
|
||
|
===
|
||
|
* **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)
|
||
|
|
||
|
license
|
||
|
=======
|
||
|
MIT-License, see LICENSE file.
|