%global _empty_manifest_terminate_build 0 Name: python-django-kronos Version: 1.0 Release: 1 Summary: Kronos is a Django application that makes it easy to define and schedule tasks with cron. License: UNKNOWN URL: http://github.com/jgorset/django-kronos Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4e/90/15b99070666da99c3904c0ad7b66b263a7fd678cf0c2764810435ab18ed6/django-kronos-1.0.tar.gz BuildArch: noarch %description 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) Kronos works with Django management commands, too:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *') class Command(BaseCommand): def handle(self, *args, **options): print('Hello, world!') If your management command accepts arguments, just pass them in the decorator:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *', args={'-l': 'nb'}) class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( '-l', '--language', dest='language', type=str, default='en', ) def handle(self, *args, **options): if options['language'] == 'en': print('Hello, world!') if options['language'] == 'nb': print('Hei, verden!') 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`` KRONOS_PREFIX Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``. If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py`` 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. %package -n python3-django-kronos Summary: Kronos is a Django application that makes it easy to define and schedule tasks with cron. Provides: python-django-kronos BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-kronos 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) Kronos works with Django management commands, too:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *') class Command(BaseCommand): def handle(self, *args, **options): print('Hello, world!') If your management command accepts arguments, just pass them in the decorator:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *', args={'-l': 'nb'}) class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( '-l', '--language', dest='language', type=str, default='en', ) def handle(self, *args, **options): if options['language'] == 'en': print('Hello, world!') if options['language'] == 'nb': print('Hei, verden!') 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`` KRONOS_PREFIX Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``. If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py`` 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. %package help Summary: Development documents and examples for django-kronos Provides: python3-django-kronos-doc %description help 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) Kronos works with Django management commands, too:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *') class Command(BaseCommand): def handle(self, *args, **options): print('Hello, world!') If your management command accepts arguments, just pass them in the decorator:: # app/management/commands/task.py from django.core.management.base import BaseCommand import kronos @kronos.register('0 0 * * *', args={'-l': 'nb'}) class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( '-l', '--language', dest='language', type=str, default='en', ) def handle(self, *args, **options): if options['language'] == 'en': print('Hello, world!') if options['language'] == 'nb': print('Hei, verden!') 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`` KRONOS_PREFIX Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``. If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py`` 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. %prep %autosetup -n django-kronos-1.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-kronos -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Mon May 15 2023 Python_Bot - 1.0-1 - Package Spec generated