summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-django-apscheduler.spec185
-rw-r--r--sources1
3 files changed, 187 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..30af634 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/django-apscheduler-0.6.2.tar.gz
diff --git a/python-django-apscheduler.spec b/python-django-apscheduler.spec
new file mode 100644
index 0000000..06ffa28
--- /dev/null
+++ b/python-django-apscheduler.spec
@@ -0,0 +1,185 @@
+%global _empty_manifest_terminate_build 0
+Name: python-django-apscheduler
+Version: 0.6.2
+Release: 1
+Summary: APScheduler for Django
+License: MIT
+URL: http://github.com/jcass77/django-apscheduler
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/37/a2/3815e39c3ec7c83c721d9330380b2afad97b8fee9e83d19b23d4a47235f8/django-apscheduler-0.6.2.tar.gz
+BuildArch: noarch
+
+Requires: python3-django
+Requires: python3-apscheduler
+
+%description
+[![PyPI](https://img.shields.io/pypi/v/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/jcass77/django-apscheduler/Python%20package)](https://github.com/jcass77/django-apscheduler/actions?query=workflow%3A%22Python+package%22)
+[![Codecov](https://img.shields.io/codecov/c/github/jcass77/django-apscheduler?token=upz6ukIqMN)](https://codecov.io/gh/jcass77/django-apscheduler)
+[![Code style:black](https://img.shields.io/badge/code%20style-black-black)](https://pypi.org/project/black)
+[APScheduler](https://github.com/agronholm/apscheduler) for [Django](https://github.com/django/django).
+This is a Django app that adds a lightweight wrapper around APScheduler. It enables storing persistent jobs in the
+database using Django's ORM.
+django-apscheduler is a great choice for quickly and easily adding basic scheduling features to your Django applications
+with minimal dependencies and very little additional configuration. The ideal use case probably involves running a
+handful of tasks on a fixed execution schedule.
+**PLEASE NOTE:** the trade-off of this simplicity is that you need to **be careful to ensure that you have only ONE
+scheduler actively running at a particular point in time**.
+This limitation is due to the fact that APScheduler does not currently have
+any [interprocess synchronization and signalling scheme](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+that would enable the scheduler to be notified when a job has been added, modified, or removed from a job store (in
+other words, different schedulers won't be able to tell if a job has already been run by another scheduler, and changing
+a job's scheduled run time directly in the database does nothing unless you also restart the scheduler).
+Depending on how you are currently doing your
+Django [deployments](https://docs.djangoproject.com/en/dev/howto/deployment/#deploying-django), working with this
+limitation might require a bit of thought. It is quite common to start up many webserver worker process in production
+environments in order to scale and handle large volumes of user traffic. If each of these worker processes end up
+running their own scheduler then this can result in jobs being missed or executed multiple times, as well as duplicate
+entries being created in the `DjangoJobExecution` table.
+Support for sharing a persistent job store between multiple schedulers appears to be planned for
+an [upcoming APScheduler 4.0 release](https://github.com/agronholm/apscheduler/issues/465).
+So for now your options are to either:
+1. Use a custom Django management command to start a single scheduler in its own dedicated process (**recommended** -
+ see the `runapscheduler.py` example below); or
+2. Implement your
+ own [remote processing](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+ logic to ensure that a single `DjangoJobStore` can be used by all of the webserver's worker processes in a
+ coordinated and synchronized way (might not be worth the extra effort and increased complexity for most use cases);
+ or
+3. Select an alternative task processing library that *does* support inter-process communication using some sort of
+ shared message broker like Redis, RabbitMQ, Amazon SQS or the like (see:
+ https://djangopackages.org/grids/g/workers-queues-tasks/ for popular options).
+
+%package -n python3-django-apscheduler
+Summary: APScheduler for Django
+Provides: python-django-apscheduler
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-django-apscheduler
+[![PyPI](https://img.shields.io/pypi/v/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/jcass77/django-apscheduler/Python%20package)](https://github.com/jcass77/django-apscheduler/actions?query=workflow%3A%22Python+package%22)
+[![Codecov](https://img.shields.io/codecov/c/github/jcass77/django-apscheduler?token=upz6ukIqMN)](https://codecov.io/gh/jcass77/django-apscheduler)
+[![Code style:black](https://img.shields.io/badge/code%20style-black-black)](https://pypi.org/project/black)
+[APScheduler](https://github.com/agronholm/apscheduler) for [Django](https://github.com/django/django).
+This is a Django app that adds a lightweight wrapper around APScheduler. It enables storing persistent jobs in the
+database using Django's ORM.
+django-apscheduler is a great choice for quickly and easily adding basic scheduling features to your Django applications
+with minimal dependencies and very little additional configuration. The ideal use case probably involves running a
+handful of tasks on a fixed execution schedule.
+**PLEASE NOTE:** the trade-off of this simplicity is that you need to **be careful to ensure that you have only ONE
+scheduler actively running at a particular point in time**.
+This limitation is due to the fact that APScheduler does not currently have
+any [interprocess synchronization and signalling scheme](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+that would enable the scheduler to be notified when a job has been added, modified, or removed from a job store (in
+other words, different schedulers won't be able to tell if a job has already been run by another scheduler, and changing
+a job's scheduled run time directly in the database does nothing unless you also restart the scheduler).
+Depending on how you are currently doing your
+Django [deployments](https://docs.djangoproject.com/en/dev/howto/deployment/#deploying-django), working with this
+limitation might require a bit of thought. It is quite common to start up many webserver worker process in production
+environments in order to scale and handle large volumes of user traffic. If each of these worker processes end up
+running their own scheduler then this can result in jobs being missed or executed multiple times, as well as duplicate
+entries being created in the `DjangoJobExecution` table.
+Support for sharing a persistent job store between multiple schedulers appears to be planned for
+an [upcoming APScheduler 4.0 release](https://github.com/agronholm/apscheduler/issues/465).
+So for now your options are to either:
+1. Use a custom Django management command to start a single scheduler in its own dedicated process (**recommended** -
+ see the `runapscheduler.py` example below); or
+2. Implement your
+ own [remote processing](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+ logic to ensure that a single `DjangoJobStore` can be used by all of the webserver's worker processes in a
+ coordinated and synchronized way (might not be worth the extra effort and increased complexity for most use cases);
+ or
+3. Select an alternative task processing library that *does* support inter-process communication using some sort of
+ shared message broker like Redis, RabbitMQ, Amazon SQS or the like (see:
+ https://djangopackages.org/grids/g/workers-queues-tasks/ for popular options).
+
+%package help
+Summary: Development documents and examples for django-apscheduler
+Provides: python3-django-apscheduler-doc
+%description help
+[![PyPI](https://img.shields.io/pypi/v/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-apscheduler)](https://pypi.org/project/django-apscheduler/)
+[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/jcass77/django-apscheduler/Python%20package)](https://github.com/jcass77/django-apscheduler/actions?query=workflow%3A%22Python+package%22)
+[![Codecov](https://img.shields.io/codecov/c/github/jcass77/django-apscheduler?token=upz6ukIqMN)](https://codecov.io/gh/jcass77/django-apscheduler)
+[![Code style:black](https://img.shields.io/badge/code%20style-black-black)](https://pypi.org/project/black)
+[APScheduler](https://github.com/agronholm/apscheduler) for [Django](https://github.com/django/django).
+This is a Django app that adds a lightweight wrapper around APScheduler. It enables storing persistent jobs in the
+database using Django's ORM.
+django-apscheduler is a great choice for quickly and easily adding basic scheduling features to your Django applications
+with minimal dependencies and very little additional configuration. The ideal use case probably involves running a
+handful of tasks on a fixed execution schedule.
+**PLEASE NOTE:** the trade-off of this simplicity is that you need to **be careful to ensure that you have only ONE
+scheduler actively running at a particular point in time**.
+This limitation is due to the fact that APScheduler does not currently have
+any [interprocess synchronization and signalling scheme](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+that would enable the scheduler to be notified when a job has been added, modified, or removed from a job store (in
+other words, different schedulers won't be able to tell if a job has already been run by another scheduler, and changing
+a job's scheduled run time directly in the database does nothing unless you also restart the scheduler).
+Depending on how you are currently doing your
+Django [deployments](https://docs.djangoproject.com/en/dev/howto/deployment/#deploying-django), working with this
+limitation might require a bit of thought. It is quite common to start up many webserver worker process in production
+environments in order to scale and handle large volumes of user traffic. If each of these worker processes end up
+running their own scheduler then this can result in jobs being missed or executed multiple times, as well as duplicate
+entries being created in the `DjangoJobExecution` table.
+Support for sharing a persistent job store between multiple schedulers appears to be planned for
+an [upcoming APScheduler 4.0 release](https://github.com/agronholm/apscheduler/issues/465).
+So for now your options are to either:
+1. Use a custom Django management command to start a single scheduler in its own dedicated process (**recommended** -
+ see the `runapscheduler.py` example below); or
+2. Implement your
+ own [remote processing](https://apscheduler.readthedocs.io/en/latest/faq.html#how-do-i-share-a-single-job-store-among-one-or-more-worker-processes)
+ logic to ensure that a single `DjangoJobStore` can be used by all of the webserver's worker processes in a
+ coordinated and synchronized way (might not be worth the extra effort and increased complexity for most use cases);
+ or
+3. Select an alternative task processing library that *does* support inter-process communication using some sort of
+ shared message broker like Redis, RabbitMQ, Amazon SQS or the like (see:
+ https://djangopackages.org/grids/g/workers-queues-tasks/ for popular options).
+
+%prep
+%autosetup -n django-apscheduler-0.6.2
+
+%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-apscheduler -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.2-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..71721db
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+68edd4f7e53b201c7bdd0422875299e5 django-apscheduler-0.6.2.tar.gz