%global _empty_manifest_terminate_build 0 Name: python-django-q Version: 1.3.9 Release: 1 Summary: A multiprocessing distributed task queue for Django License: MIT URL: https://django-q.readthedocs.org Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3f/49/d54c6631bce6fea588ad31cd4f1b7538a4f5e6e7b85a5187c5de72c9fa75/django-q-1.3.9.tar.gz BuildArch: noarch Requires: python3-django Requires: python3-blessed Requires: python3-arrow Requires: python3-django-picklefield Requires: python3-hiredis Requires: python3-redis Requires: python3-psutil Requires: python3-django-redis Requires: python3-iron-mq Requires: python3-boto3 Requires: python3-pymongo Requires: python3-croniter Requires: python3-django-q-rollbar Requires: python3-django-q-sentry %description |image0| |image1| |docs| |image2| Features ~~~~~~~~ - Multiprocessing worker pool - Asynchronous tasks - Scheduled, cron and repeated tasks - Signed and compressed packages - Failure and success database or cache - Result hooks, groups and chains - Django Admin integration - PaaS compatible with multiple instances - Multi cluster monitor - Redis, Disque, IronMQ, SQS, MongoDB or ORM - Rollbar and Sentry support Requirements ~~~~~~~~~~~~ - `Django `__ > = 2.2 - `Django-picklefield `__ - `Arrow `__ - `Blessed `__ Tested with: Python 3.7, 3.8, 3.9 Django 2.2.X and 3.2.X Brokers ~~~~~~~ - `Redis `__ - `Disque `__ - `IronMQ `__ - `Amazon SQS `__ - `MongoDB `__ - `Django ORM `__ Installation ~~~~~~~~~~~~ - Install the latest version with pip:: $ pip install django-q - Add `django_q` to your `INSTALLED_APPS` in your projects `settings.py`:: INSTALLED_APPS = ( # other apps 'django_q', ) - Run Django migrations to create the database tables:: $ python manage.py migrate - Choose a message `broker `__ , configure and install the appropriate client library. Read the full documentation at `https://django-q.readthedocs.org `__ Configuration ~~~~~~~~~~~~~ All configuration settings are optional. e.g: # settings.py example Q_CLUSTER = { 'name': 'myproject', 'workers': 8, 'recycle': 500, 'timeout': 60, 'compress': True, 'cpu_affinity': 1, 'save_limit': 250, 'queue_limit': 500, 'label': 'Django Q', 'redis': { 'host': '127.0.0.1', 'port': 6379, 'db': 0, } } For full configuration options, see the `configuration documentation `__. Management Commands ~~~~~~~~~~~~~~~~~~~ Start a cluster with:: $ python manage.py qcluster Monitor your clusters with:: $ python manage.py qmonitor Monitor your clusters' memory usage with:: $ python manage.py qmemory Check overall statistics with:: $ python manage.py qinfo Creating Tasks ~~~~~~~~~~~~~~ Use `async_task` from your code to quickly offload tasks: from django_q.tasks import async_task, result # create the task async_task('math.copysign', 2, -2) # or with a reference import math.copysign task_id = async_task(copysign, 2, -2) # get the result task_result = result(task_id) # result returns None if the task has not been executed yet # you can wait for it task_result = result(task_id, 200) # but in most cases you will want to use a hook: async_task('math.modf', 2.5, hook='hooks.print_result') # hooks.py def print_result(task): print(task.result) For more info see `Tasks `__ Schedule ~~~~~~~~ Schedules are regular Django models. You can manage them through the Admin page or directly from your code: # Use the schedule function from django_q.tasks import schedule schedule('math.copysign', 2, -2, hook='hooks.print_result', schedule_type=Schedule.DAILY) # Or create the object directly from django_q.models import Schedule Schedule.objects.create(func='math.copysign', hook='hooks.print_result', args='2,-2', schedule_type=Schedule.DAILY ) # Run a task every 5 minutes, starting at 6 today # for 2 hours import arrow schedule('math.hypot', 3, 4, schedule_type=Schedule.MINUTES, minutes=5, repeats=24, next_run=arrow.utcnow().replace(hour=18, minute=0)) # Use a cron expression schedule('math.hypot', 3, 4, schedule_type=Schedule.CRON, cron = '0 22 * * 1-5') For more info check the `Schedules `__ documentation. Testing ~~~~~~~ To run the tests you will need the following in addition to install requirements: * `py.test `__ * `pytest-django `__ * Disque from https://github.com/antirez/disque.git * Redis * MongoDB Or you can use the included Docker Compose file. The following commands can be used to run the tests: # Create virtual environment python -m venv venv # Install requirements venv/bin/pip install -r requirements.txt # Install test dependencies venv/bin/pip install pytest pytest-django # Install django-q venv/bin/python setup.py develop # Run required services (you need to have docker-compose installed) docker-compose -f test-services-docker-compose.yaml up -d # Run tests venv/bin/pytest # Stop the services required by tests (when you no longer plan to run tests) docker-compose -f test-services-docker-compose.yaml down Locale ~~~~~~ Currently available in English, German and French. Translation pull requests are always welcome. Todo ~~~~ - Better tests and coverage - Less dependencies? Acknowledgements ~~~~~~~~~~~~~~~~ - Django Q was inspired by working with `Django-RQ `__ and `RQ `__ - Human readable hashes by `HumanHash `__ - Redditors feedback at `r/django `__ - JetBrains for their `Open Source Support Program `__ %package -n python3-django-q Summary: A multiprocessing distributed task queue for Django Provides: python-django-q BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-q |image0| |image1| |docs| |image2| Features ~~~~~~~~ - Multiprocessing worker pool - Asynchronous tasks - Scheduled, cron and repeated tasks - Signed and compressed packages - Failure and success database or cache - Result hooks, groups and chains - Django Admin integration - PaaS compatible with multiple instances - Multi cluster monitor - Redis, Disque, IronMQ, SQS, MongoDB or ORM - Rollbar and Sentry support Requirements ~~~~~~~~~~~~ - `Django `__ > = 2.2 - `Django-picklefield `__ - `Arrow `__ - `Blessed `__ Tested with: Python 3.7, 3.8, 3.9 Django 2.2.X and 3.2.X Brokers ~~~~~~~ - `Redis `__ - `Disque `__ - `IronMQ `__ - `Amazon SQS `__ - `MongoDB `__ - `Django ORM `__ Installation ~~~~~~~~~~~~ - Install the latest version with pip:: $ pip install django-q - Add `django_q` to your `INSTALLED_APPS` in your projects `settings.py`:: INSTALLED_APPS = ( # other apps 'django_q', ) - Run Django migrations to create the database tables:: $ python manage.py migrate - Choose a message `broker `__ , configure and install the appropriate client library. Read the full documentation at `https://django-q.readthedocs.org `__ Configuration ~~~~~~~~~~~~~ All configuration settings are optional. e.g: # settings.py example Q_CLUSTER = { 'name': 'myproject', 'workers': 8, 'recycle': 500, 'timeout': 60, 'compress': True, 'cpu_affinity': 1, 'save_limit': 250, 'queue_limit': 500, 'label': 'Django Q', 'redis': { 'host': '127.0.0.1', 'port': 6379, 'db': 0, } } For full configuration options, see the `configuration documentation `__. Management Commands ~~~~~~~~~~~~~~~~~~~ Start a cluster with:: $ python manage.py qcluster Monitor your clusters with:: $ python manage.py qmonitor Monitor your clusters' memory usage with:: $ python manage.py qmemory Check overall statistics with:: $ python manage.py qinfo Creating Tasks ~~~~~~~~~~~~~~ Use `async_task` from your code to quickly offload tasks: from django_q.tasks import async_task, result # create the task async_task('math.copysign', 2, -2) # or with a reference import math.copysign task_id = async_task(copysign, 2, -2) # get the result task_result = result(task_id) # result returns None if the task has not been executed yet # you can wait for it task_result = result(task_id, 200) # but in most cases you will want to use a hook: async_task('math.modf', 2.5, hook='hooks.print_result') # hooks.py def print_result(task): print(task.result) For more info see `Tasks `__ Schedule ~~~~~~~~ Schedules are regular Django models. You can manage them through the Admin page or directly from your code: # Use the schedule function from django_q.tasks import schedule schedule('math.copysign', 2, -2, hook='hooks.print_result', schedule_type=Schedule.DAILY) # Or create the object directly from django_q.models import Schedule Schedule.objects.create(func='math.copysign', hook='hooks.print_result', args='2,-2', schedule_type=Schedule.DAILY ) # Run a task every 5 minutes, starting at 6 today # for 2 hours import arrow schedule('math.hypot', 3, 4, schedule_type=Schedule.MINUTES, minutes=5, repeats=24, next_run=arrow.utcnow().replace(hour=18, minute=0)) # Use a cron expression schedule('math.hypot', 3, 4, schedule_type=Schedule.CRON, cron = '0 22 * * 1-5') For more info check the `Schedules `__ documentation. Testing ~~~~~~~ To run the tests you will need the following in addition to install requirements: * `py.test `__ * `pytest-django `__ * Disque from https://github.com/antirez/disque.git * Redis * MongoDB Or you can use the included Docker Compose file. The following commands can be used to run the tests: # Create virtual environment python -m venv venv # Install requirements venv/bin/pip install -r requirements.txt # Install test dependencies venv/bin/pip install pytest pytest-django # Install django-q venv/bin/python setup.py develop # Run required services (you need to have docker-compose installed) docker-compose -f test-services-docker-compose.yaml up -d # Run tests venv/bin/pytest # Stop the services required by tests (when you no longer plan to run tests) docker-compose -f test-services-docker-compose.yaml down Locale ~~~~~~ Currently available in English, German and French. Translation pull requests are always welcome. Todo ~~~~ - Better tests and coverage - Less dependencies? Acknowledgements ~~~~~~~~~~~~~~~~ - Django Q was inspired by working with `Django-RQ `__ and `RQ `__ - Human readable hashes by `HumanHash `__ - Redditors feedback at `r/django `__ - JetBrains for their `Open Source Support Program `__ %package help Summary: Development documents and examples for django-q Provides: python3-django-q-doc %description help |image0| |image1| |docs| |image2| Features ~~~~~~~~ - Multiprocessing worker pool - Asynchronous tasks - Scheduled, cron and repeated tasks - Signed and compressed packages - Failure and success database or cache - Result hooks, groups and chains - Django Admin integration - PaaS compatible with multiple instances - Multi cluster monitor - Redis, Disque, IronMQ, SQS, MongoDB or ORM - Rollbar and Sentry support Requirements ~~~~~~~~~~~~ - `Django `__ > = 2.2 - `Django-picklefield `__ - `Arrow `__ - `Blessed `__ Tested with: Python 3.7, 3.8, 3.9 Django 2.2.X and 3.2.X Brokers ~~~~~~~ - `Redis `__ - `Disque `__ - `IronMQ `__ - `Amazon SQS `__ - `MongoDB `__ - `Django ORM `__ Installation ~~~~~~~~~~~~ - Install the latest version with pip:: $ pip install django-q - Add `django_q` to your `INSTALLED_APPS` in your projects `settings.py`:: INSTALLED_APPS = ( # other apps 'django_q', ) - Run Django migrations to create the database tables:: $ python manage.py migrate - Choose a message `broker `__ , configure and install the appropriate client library. Read the full documentation at `https://django-q.readthedocs.org `__ Configuration ~~~~~~~~~~~~~ All configuration settings are optional. e.g: # settings.py example Q_CLUSTER = { 'name': 'myproject', 'workers': 8, 'recycle': 500, 'timeout': 60, 'compress': True, 'cpu_affinity': 1, 'save_limit': 250, 'queue_limit': 500, 'label': 'Django Q', 'redis': { 'host': '127.0.0.1', 'port': 6379, 'db': 0, } } For full configuration options, see the `configuration documentation `__. Management Commands ~~~~~~~~~~~~~~~~~~~ Start a cluster with:: $ python manage.py qcluster Monitor your clusters with:: $ python manage.py qmonitor Monitor your clusters' memory usage with:: $ python manage.py qmemory Check overall statistics with:: $ python manage.py qinfo Creating Tasks ~~~~~~~~~~~~~~ Use `async_task` from your code to quickly offload tasks: from django_q.tasks import async_task, result # create the task async_task('math.copysign', 2, -2) # or with a reference import math.copysign task_id = async_task(copysign, 2, -2) # get the result task_result = result(task_id) # result returns None if the task has not been executed yet # you can wait for it task_result = result(task_id, 200) # but in most cases you will want to use a hook: async_task('math.modf', 2.5, hook='hooks.print_result') # hooks.py def print_result(task): print(task.result) For more info see `Tasks `__ Schedule ~~~~~~~~ Schedules are regular Django models. You can manage them through the Admin page or directly from your code: # Use the schedule function from django_q.tasks import schedule schedule('math.copysign', 2, -2, hook='hooks.print_result', schedule_type=Schedule.DAILY) # Or create the object directly from django_q.models import Schedule Schedule.objects.create(func='math.copysign', hook='hooks.print_result', args='2,-2', schedule_type=Schedule.DAILY ) # Run a task every 5 minutes, starting at 6 today # for 2 hours import arrow schedule('math.hypot', 3, 4, schedule_type=Schedule.MINUTES, minutes=5, repeats=24, next_run=arrow.utcnow().replace(hour=18, minute=0)) # Use a cron expression schedule('math.hypot', 3, 4, schedule_type=Schedule.CRON, cron = '0 22 * * 1-5') For more info check the `Schedules `__ documentation. Testing ~~~~~~~ To run the tests you will need the following in addition to install requirements: * `py.test `__ * `pytest-django `__ * Disque from https://github.com/antirez/disque.git * Redis * MongoDB Or you can use the included Docker Compose file. The following commands can be used to run the tests: # Create virtual environment python -m venv venv # Install requirements venv/bin/pip install -r requirements.txt # Install test dependencies venv/bin/pip install pytest pytest-django # Install django-q venv/bin/python setup.py develop # Run required services (you need to have docker-compose installed) docker-compose -f test-services-docker-compose.yaml up -d # Run tests venv/bin/pytest # Stop the services required by tests (when you no longer plan to run tests) docker-compose -f test-services-docker-compose.yaml down Locale ~~~~~~ Currently available in English, German and French. Translation pull requests are always welcome. Todo ~~~~ - Better tests and coverage - Less dependencies? Acknowledgements ~~~~~~~~~~~~~~~~ - Django Q was inspired by working with `Django-RQ `__ and `RQ `__ - Human readable hashes by `HumanHash `__ - Redditors feedback at `r/django `__ - JetBrains for their `Open Source Support Program `__ %prep %autosetup -n django-q-1.3.9 %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-q -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Mon Apr 10 2023 Python_Bot - 1.3.9-1 - Package Spec generated