|synopsis:||Documentation on creating/using jobs in Django-extensions|
Creating jobs works much like management commands work in Django.
$ python manage.py create_jobs <django_application>
to make a
jobs directory inside of an application.
jobs directory will have the following tree:
jobs ├── daily │ └── __init__.py ├── hourly │ └── __init__.py ├── monthly │ └── __init__.py ├── weekly │ └── __init__.py ├── yearly │ └── __init__.py ├── __init__.py └── sample.py
Create a job¶
A job is a Python script with a mandatory
BaseJob class which extends from
It has one method that must be implemented called
which is called when the job is run.
are used only to for organisation purpose.
Note: If you want to use
Minutely job, create python package with name
minutely respectively (similar to
To create your first job you can start copying
Remember to replace
Some simple examples are provided by the django_extensions.jobs package.
Note that each job should be in a new python script (within respective directory) and the class implementing the cron should be named
__init__.py file is not used for identifying jobs.
Run a job¶
The following commands are related to jobs:
create_jobs, create the directory structure for jobs
runjob, run a single job
runjobs, run all hourly/daily/weekly/monthly jobs
Use “runjob(s) -l” to list all jobs recognized.
Jobs do not run automatically! You must either run a job manually specifying the exact time on which the command is to be run, or use crontab:
@hourly /path/to/my/project/manage.py runjobs hourly
@daily /path/to/my/project/manage.py runjobs daily
@weekly /path/to/my/project/manage.py runjobs weekly
@monthly /path/to/my/project/manage.py runjobs monthly