{ "info": { "author": "Johannes Gorset", "author_email": "jgorset@gmail.com", "bugtrack_url": null, "classifiers": [], "description": ".. image:: https://raw.githubusercontent.com/jgorset/django-kronos/master/docs/banner.png\n\n.. image:: https://coveralls.io/repos/github/jgorset/django-kronos/badge.svg?branch=master\n :target: https://coveralls.io/github/jgorset/django-kronos?branch=master\n.. image:: https://travis-ci.org/jgorset/django-kronos.svg?branch=master\n :target: https://travis-ci.org/jgorset/django-kronos\n.. image:: https://img.shields.io/github/license/jgorset/django-kronos.svg\n :target: https://raw.githubusercontent.com/jgorset/django-kronos/master/LICENSE\n.. image:: https://img.shields.io/pypi/v/django-kronos.svg\n :target: https://pypi.python.org/pypi/django-kronos/\n\nUsage\n-----\n\nDefine tasks\n^^^^^^^^^^^^\n\nKronos collects tasks from ``cron`` modules in your project root and each of your applications::\n\n # app/cron.py\n\n import kronos\n import random\n\n @kronos.register('0 0 * * *')\n def complain():\n complaints = [\n \"I forgot to migrate our applications's cron jobs to our new server! Darn!\",\n \"I'm out of complaints! Damnit!\"\n ]\n\n print random.choice(complaints)\n\nKronos works with Django management commands, too::\n\n # app/management/commands/task.py\n\n from django.core.management.base import BaseCommand\n\n import kronos\n\n @kronos.register('0 0 * * *')\n class Command(BaseCommand):\n def handle(self, *args, **options):\n print('Hello, world!')\n\nIf your management command accepts arguments, just pass them in the decorator::\n\n # app/management/commands/task.py\n\n from django.core.management.base import BaseCommand\n\n import kronos\n\n @kronos.register('0 0 * * *', args={'-l': 'nb'})\n class Command(BaseCommand):\n\n def add_arguments(self, parser):\n parser.add_argument(\n '-l', '--language',\n dest='language',\n type=str,\n default='en',\n )\n\n def handle(self, *args, **options):\n if options['language'] == 'en':\n print('Hello, world!')\n\n if options['language'] == 'nb':\n print('Hei, verden!')\n\n\nRun tasks manually\n^^^^^^^^^^^^^^^^^^\n\n::\n\n $ python manage.py runtask complain\n I forgot to migrate our applications's cron jobs to our new server! Darn!\n\nKeep in mind that if the registered task is a django command you have to run it\nin the normal way::\n\n $ python manage.py task\n\n\nList all registered tasks\n^^^^^^^^^^^^^^^^^^\n\n::\n\n $ python manage.py showtasks\n * List of tasks registered in Kronos *\n >> Kronos tasks\n >> my_task_one\n >> my_task_two\n >> Django tasks\n >> my_django_task\n\n\nRegister tasks with cron\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n $ python manage.py installtasks\n Installed 1 task.\n\nYou can review the crontab with a ``crontab -l`` command::\n\n $ crontab -l\n 0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB\n 0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB\n\nUsually this line will work pretty well for you, but there can be some rare\ncases when it requires modification. You can achieve it with a number of\nsettings variables used by kronos:\n\nKRONOS_PYTHON\n Python interpreter to build a crontab line (defaults to the interpreter you used to\n invoke the management command).\n\nKRONOS_MANAGE\n Management command to build a crontab line (defaults to ``manage.py`` in the current\n working directory).\n\nKRONOS_PYTHONPATH\n Extra path which will be added as a ``--pythonpath`` option to the management command.\n\nKRONOS_POSTFIX\n Extra string added at the end of the command. For dirty thinks like ``> /dev/null 2>&1``\n\nKRONOS_PREFIX\n Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``.\n If you use the ``virtualenv``, you can add the environment path by ``echo \"KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '\" >> myprpoject/settings.py``\n\nDefine these variables in your ``settings.py`` file if you wish to alter crontab lines.\n\nThe env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after\nbeing installed.\n\nInstallation\n------------\n\n::\n\n $ pip install django-kronos\n\n... and add ``kronos`` to ``INSTALLED_APPS``.\n\n\nContribute\n----------\n\n* Fork the repository.\n* Do your thing.\n* Open a pull request.\n* Receive cake.\n\nI love you\n----------\n\nJohannes Gorset made this. You should `tweet me `_ if you can't get it\nto work. In fact, you should tweet me anyway.\n\n\n1.0.0\n+++++\n\n* Django 1.10 support.\n\n0.9.0\n+++++\n\n* Fixed a bug that caused Kronos to crash if the settings module resided outside\n of the project directory.\n* Fixed a bug that caused Kronos to remove other crontabs upon uninstalling.\n\n0.8.0\n+++++\n\n* Kronos is now even more compatible with Python 3.\n* Kronos is no longer compatible with Python 2.6.\n* Kronos is no longer compatible with Django 1.7.\n* You may now prefix commands with ``KRONOS_PREFIX``.\n* Fixed an issue where Kronos would not pick up on AppConfig apps.\n\n0.7.0\n+++++\n\n* You may now pass arguments to Django management commands registered with Kronos.\n* Kronos is now compatible with Python 3.\n* Kronos will now log errors when it fails to load tasks.\n\n0.6.0\n+++++\n\n* You may now register Django management commands.\n\n0.5.0\n+++++\n\n* You may now list commands with ``python manage.py showtasks``.\n\n0.4.0\n+++++\n\n* You may now postfix commands with ``KRONOS_POSTFIX``.\n\n0.3.0\n+++++\n\n* You may now customize the interpreter, management path and python path for tasks with the ``KRONOS_PYTHON``,\n ``KRONOS_MANAGE`` and ``KRONOS_PYTHONPATH`` settings, respectively.\n\n0.2.3\n+++++\n\n* Kronos now supports Django 1.4-style projects.\n* Fixed a bug that caused installation to fail for users that didn't already have a crontab.\n\n0.2.2\n+++++\n\n* Fixed a bug that caused unclosed single quotes in the crontab to raise a ValueError\n\n0.2.1\n+++++\n\n* Fixed a bug that caused 'cron'-modules in the project root to be ignored.\n\n0.2.0\n+++++\n\n* Kronos will now collect tasks from a 'cron' module in the project root.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jgorset/django-kronos", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-kronos", "package_url": "https://pypi.org/project/django-kronos/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-kronos/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/jgorset/django-kronos" }, "release_url": "https://pypi.org/project/django-kronos/1.0/", "requires_dist": null, "requires_python": null, "summary": "Kronos is a Django application that makes it easy to define and schedule tasks with cron.", "version": "1.0" }, "last_serial": 2298305, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "2c534f1a589631d7893d269e98254423", "sha256": "9f5775f6fd420d6f1fc43ccc2f3cd5472ff4aea1d38167020c43854abd7cdac2" }, "downloads": -1, "filename": "django-kronos-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2c534f1a589631d7893d269e98254423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2329, "upload_time": "2011-12-26T11:19:08", "url": "https://files.pythonhosted.org/packages/52/29/b67cdddfeb5c81a936ce15cb0b6417e15635a0851009213ca93e889690ae/django-kronos-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "188a079a720b38f4f40429eb701144b1", "sha256": "061c54cb0884b4406ca6ef55a4e5478b85d7ff6a5d3f0933d49b01d6fb8eaa30" }, "downloads": -1, "filename": "django-kronos-0.2.3.tar.gz", "has_sig": false, "md5_digest": "188a079a720b38f4f40429eb701144b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8204, "upload_time": "2012-02-24T21:23:13", "url": "https://files.pythonhosted.org/packages/2e/87/ccc184916b80f009e5a580362a5d048857bb9ba4b136e37ecd2a5f25d58f/django-kronos-0.2.3.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "3bc88f5c997916cfe3d778ce748f410a", "sha256": "28f5803c705d9acd5339687d1a221b04d45a71bbc46fc139f56b9ac5d465a538" }, "downloads": -1, "filename": "django-kronos-0.3.tar.gz", "has_sig": false, "md5_digest": "3bc88f5c997916cfe3d778ce748f410a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9244, "upload_time": "2012-06-27T09:17:47", "url": "https://files.pythonhosted.org/packages/ee/da/7aa513a1ef048161fba7d75b0b6d54394dc5f9ec2f7ddd70da2df9bf06a9/django-kronos-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "5f5746b64571b0445734c85f8ae8a06c", "sha256": "11ca83b248e07ee689e1a933f58c6faca42d64955f66c8262cf43c2705a85310" }, "downloads": -1, "filename": "django-kronos-0.4.tar.gz", "has_sig": false, "md5_digest": "5f5746b64571b0445734c85f8ae8a06c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9549, "upload_time": "2013-10-03T13:04:35", "url": "https://files.pythonhosted.org/packages/d5/67/b126f531cb80ef3d31096447e9902ed7fee0526acbe998fa7a609e72eded/django-kronos-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "65faeb29b43ca0c4252f162eaaa38c5d", "sha256": "dc0a1bd452014a6435372fabf0bf12370810e653397af7d320b4c4252721ff37" }, "downloads": -1, "filename": "django-kronos-0.5.tar.gz", "has_sig": false, "md5_digest": "65faeb29b43ca0c4252f162eaaa38c5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11241, "upload_time": "2014-12-02T10:16:29", "url": "https://files.pythonhosted.org/packages/af/0c/a7b3bf426a283391433f2d7cb724b4395528929db837d85e4564f2b1ba9c/django-kronos-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "64ef13f3f2cbae0be39c89196d6d47bc", "sha256": "61dd415d576c3d818a92398ce7f9d0692ab4ba3ac217b98cab7ca286b21a91dd" }, "downloads": -1, "filename": "django-kronos-0.6.tar.gz", "has_sig": false, "md5_digest": "64ef13f3f2cbae0be39c89196d6d47bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15283, "upload_time": "2015-01-07T14:29:47", "url": "https://files.pythonhosted.org/packages/82/7a/7290e3b6118000e37426e52140191abc8edaaa4372d593c1c4e952bd19b9/django-kronos-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "02f6a9d44bf48312834fd73833abcd40", "sha256": "f01f639750677db88399ac012536e0d289216e9dd022c665a196bc4d7fecf6b0" }, "downloads": -1, "filename": "django-kronos-0.7.tar.gz", "has_sig": false, "md5_digest": "02f6a9d44bf48312834fd73833abcd40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16434, "upload_time": "2015-04-24T06:15:38", "url": "https://files.pythonhosted.org/packages/38/dd/51b473fe4e31f25eca62b6091d8178bae04b6ec71992a0ced1d4f41cd47b/django-kronos-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "35359208e4aa4e2a19c9417e090ff933", "sha256": "53d15511cacb5e4ae6bd3fe23b453aafa6ef68e8415ba7f9a169ca433ed95c29" }, "downloads": -1, "filename": "django-kronos-0.8.tar.gz", "has_sig": false, "md5_digest": "35359208e4aa4e2a19c9417e090ff933", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17668, "upload_time": "2015-07-16T10:40:08", "url": "https://files.pythonhosted.org/packages/d6/cc/bc691c9f2191a91a51c0685a128d92a343d292a8308cc35f47d8d0585474/django-kronos-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "615234899f3fb10d2db0bd6ffc501246", "sha256": "dc14d8be9c3b7b87c96462fd791a87c4add9f1395febf88aa130c59df48e9543" }, "downloads": -1, "filename": "django-kronos-0.9.tar.gz", "has_sig": false, "md5_digest": "615234899f3fb10d2db0bd6ffc501246", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18239, "upload_time": "2016-01-11T18:50:45", "url": "https://files.pythonhosted.org/packages/c8/5c/923a53b0196399945d36c6afe14da163762b046da6de318b1bc0ae9a982c/django-kronos-0.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "e843e6a8fbce56546f362780777f92ae", "sha256": "04899ccaaa36d46f7d171efc3b5da9ac58596cb52e53c6e80c5c86b72f2b23b8" }, "downloads": -1, "filename": "django-kronos-1.0.tar.gz", "has_sig": false, "md5_digest": "e843e6a8fbce56546f362780777f92ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10824, "upload_time": "2016-08-23T17:27:40", "url": "https://files.pythonhosted.org/packages/4e/90/15b99070666da99c3904c0ad7b66b263a7fd678cf0c2764810435ab18ed6/django-kronos-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e843e6a8fbce56546f362780777f92ae", "sha256": "04899ccaaa36d46f7d171efc3b5da9ac58596cb52e53c6e80c5c86b72f2b23b8" }, "downloads": -1, "filename": "django-kronos-1.0.tar.gz", "has_sig": false, "md5_digest": "e843e6a8fbce56546f362780777f92ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10824, "upload_time": "2016-08-23T17:27:40", "url": "https://files.pythonhosted.org/packages/4e/90/15b99070666da99c3904c0ad7b66b263a7fd678cf0c2764810435ab18ed6/django-kronos-1.0.tar.gz" } ] }