Kronos is a Django application that makes it easy to define and schedule tasks with cron.
Project description
Kronos
======
.. image:: https://secure.travis-ci.org/jgorset/django-kronos.png?branch=master
Kronos makes it really easy to schedule tasks with cron.
Installation
------------
::
$ pip install django-kronos
... and add ``kronos`` to ``INSTALLED_APPS``.
Usage
-----
Define tasks
^^^^^^^^^^^^
Kronos collects tasks from ``cron`` modules in your project root and each of your applications::
# app/cron.py
import kronos
import random
@kronos.register('0 0 * * *')
def complain():
complaints = [
"I forgot to migrate our applications's cron jobs to our new server! Darn!",
"I'm out of complaints! Damnit!"
]
print random.choice(complaints)
If you have a task in a Django Command you can register it doing::
# app/management/commands/task.py
from django.core.management.base import NoArgsCommand
import kronos
@kronos.register('0 0 * * *')
class Command(NoArgsCommand):
def handle_noargs(self, **options):
print('command task')
Run tasks manually
^^^^^^^^^^^^^^^^^^
::
$ python manage.py runtask complain
I forgot to migrate our applications's cron jobs to our new server! Darn!
Keep in mind that if the registered task is a django command you have to run it
in the normal way::
$ python manage.py task
List all registered tasks
^^^^^^^^^^^^^^^^^^
::
$ python manage.py showtasks
* List of tasks registered in Kronos *
>> Kronos tasks
>> my_task_one
>> my_task_two
>> Django tasks
>> my_django_task
Register tasks with cron
^^^^^^^^^^^^^^^^^^^^^^^^
::
$ python manage.py installtasks
Installed 1 task.
You can review the crontab with a ``crontab -l`` command::
$ crontab -l
0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
Usually this line will work pretty well for you, but there can be some rare
cases when it requires modification. You can achieve it with a number of
settings variables used by kronos:
KRONOS_PYTHON
Python interpreter to build a crontab line (defaults to the interpreter you used to
invoke the management command).
KRONOS_MANAGE
Management command to build a crontab line (defaults to ``manage.py`` in the current
working directory).
KRONOS_PYTHONPATH
Extra path which will be added as a ``--pythonpath`` option to the management command.
KRONOS_POSTFIX
Extra string added at the end of the command. For dirty thinks like '> /dev/null 2>&1'
Define these variables in your ``settings.py`` file if you wish to alter crontab lines.
The env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after
being installed.
Contribute
----------
* Fork the repository.
* Do your thing.
* Open a pull request.
* Receive cake.
I love you
----------
Johannes Gorset made this. You should `tweet me <http://twitter.com/jgorset>`_ if you can't get it
to work. In fact, you should tweet me anyway.
0.5.0
+++++
* You may now list commands with ``python manage.py showtasks``.
0.4.0
+++++
* You may now postfix commands with ``KRONOS_POSTFIX``.
0.3.0
+++++
* You may now customize the interpreter, management path and python path for tasks with the ``KRONOS_PYTHON``,
``KRONOS_MANAGE`` and ``KRONOS_PYTHONPATH`` settings, respectively.
0.2.3
+++++
* Kronos now supports Django 1.4-style projects.
* Fixed a bug that caused installation to fail for users that didn't already have a crontab.
0.2.2
+++++
* Fixed a bug that caused unclosed single quotes in the crontab to raise a ValueError
0.2.1
+++++
* Fixed a bug that caused 'cron'-modules in the project root to be ignored.
0.2.0
+++++
* Kronos will now collect tasks from a 'cron' module in the project root.
======
.. image:: https://secure.travis-ci.org/jgorset/django-kronos.png?branch=master
Kronos makes it really easy to schedule tasks with cron.
Installation
------------
::
$ pip install django-kronos
... and add ``kronos`` to ``INSTALLED_APPS``.
Usage
-----
Define tasks
^^^^^^^^^^^^
Kronos collects tasks from ``cron`` modules in your project root and each of your applications::
# app/cron.py
import kronos
import random
@kronos.register('0 0 * * *')
def complain():
complaints = [
"I forgot to migrate our applications's cron jobs to our new server! Darn!",
"I'm out of complaints! Damnit!"
]
print random.choice(complaints)
If you have a task in a Django Command you can register it doing::
# app/management/commands/task.py
from django.core.management.base import NoArgsCommand
import kronos
@kronos.register('0 0 * * *')
class Command(NoArgsCommand):
def handle_noargs(self, **options):
print('command task')
Run tasks manually
^^^^^^^^^^^^^^^^^^
::
$ python manage.py runtask complain
I forgot to migrate our applications's cron jobs to our new server! Darn!
Keep in mind that if the registered task is a django command you have to run it
in the normal way::
$ python manage.py task
List all registered tasks
^^^^^^^^^^^^^^^^^^
::
$ python manage.py showtasks
* List of tasks registered in Kronos *
>> Kronos tasks
>> my_task_one
>> my_task_two
>> Django tasks
>> my_django_task
Register tasks with cron
^^^^^^^^^^^^^^^^^^^^^^^^
::
$ python manage.py installtasks
Installed 1 task.
You can review the crontab with a ``crontab -l`` command::
$ crontab -l
0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
Usually this line will work pretty well for you, but there can be some rare
cases when it requires modification. You can achieve it with a number of
settings variables used by kronos:
KRONOS_PYTHON
Python interpreter to build a crontab line (defaults to the interpreter you used to
invoke the management command).
KRONOS_MANAGE
Management command to build a crontab line (defaults to ``manage.py`` in the current
working directory).
KRONOS_PYTHONPATH
Extra path which will be added as a ``--pythonpath`` option to the management command.
KRONOS_POSTFIX
Extra string added at the end of the command. For dirty thinks like '> /dev/null 2>&1'
Define these variables in your ``settings.py`` file if you wish to alter crontab lines.
The env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after
being installed.
Contribute
----------
* Fork the repository.
* Do your thing.
* Open a pull request.
* Receive cake.
I love you
----------
Johannes Gorset made this. You should `tweet me <http://twitter.com/jgorset>`_ if you can't get it
to work. In fact, you should tweet me anyway.
0.5.0
+++++
* You may now list commands with ``python manage.py showtasks``.
0.4.0
+++++
* You may now postfix commands with ``KRONOS_POSTFIX``.
0.3.0
+++++
* You may now customize the interpreter, management path and python path for tasks with the ``KRONOS_PYTHON``,
``KRONOS_MANAGE`` and ``KRONOS_PYTHONPATH`` settings, respectively.
0.2.3
+++++
* Kronos now supports Django 1.4-style projects.
* Fixed a bug that caused installation to fail for users that didn't already have a crontab.
0.2.2
+++++
* Fixed a bug that caused unclosed single quotes in the crontab to raise a ValueError
0.2.1
+++++
* Fixed a bug that caused 'cron'-modules in the project root to be ignored.
0.2.0
+++++
* Kronos will now collect tasks from a 'cron' module in the project root.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-kronos-0.6.tar.gz
(15.3 kB
view hashes)