Updates
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,412 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: django-celery-beat
|
||||
Version: 2.8.1
|
||||
Summary: Database-backed Periodic Tasks.
|
||||
Home-page: https://github.com/celery/django-celery-beat
|
||||
Author: Asif Saif Uddin, Ask Solem
|
||||
Author-email: auvipy@gmail.com, ask@celeryproject.org
|
||||
License: BSD
|
||||
Keywords: django celery beat periodic task database
|
||||
Platform: any
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Framework :: Django
|
||||
Classifier: Framework :: Django :: 3.2
|
||||
Classifier: Framework :: Django :: 4.1
|
||||
Classifier: Framework :: Django :: 4.2
|
||||
Classifier: Framework :: Django :: 5.0
|
||||
Classifier: Framework :: Django :: 5.1
|
||||
Classifier: Framework :: Django :: 5.2
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Topic :: Communications
|
||||
Classifier: Topic :: System :: Distributed Computing
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
License-File: AUTHORS
|
||||
Requires-Dist: celery<6.0,>=5.2.3
|
||||
Requires-Dist: importlib-metadata<5.0; python_version < "3.8"
|
||||
Requires-Dist: django-timezone-field>=5.0
|
||||
Requires-Dist: backports.zoneinfo; python_version < "3.9"
|
||||
Requires-Dist: tzdata
|
||||
Requires-Dist: python-crontab>=2.3.4
|
||||
Requires-Dist: cron-descriptor>=1.2.32
|
||||
Requires-Dist: Django<6.0,>=2.2
|
||||
Dynamic: author
|
||||
Dynamic: author-email
|
||||
Dynamic: classifier
|
||||
Dynamic: description
|
||||
Dynamic: description-content-type
|
||||
Dynamic: home-page
|
||||
Dynamic: keywords
|
||||
Dynamic: license
|
||||
Dynamic: license-file
|
||||
Dynamic: platform
|
||||
Dynamic: requires-dist
|
||||
Dynamic: requires-python
|
||||
Dynamic: summary
|
||||
|
||||
=====================================================================
|
||||
Database-backed Periodic Tasks
|
||||
=====================================================================
|
||||
|
||||
|build-status| |coverage| |license| |wheel| |pyversion| |pyimp|
|
||||
|
||||
:Version: 2.8.1
|
||||
:Web: http://django-celery-beat.readthedocs.io/
|
||||
:Download: http://pypi.python.org/pypi/django-celery-beat
|
||||
:Source: http://github.com/celery/django-celery-beat
|
||||
:Keywords: django, celery, beat, periodic task, cron, scheduling
|
||||
|
||||
About
|
||||
=====
|
||||
|
||||
This extension enables you to store the periodic task schedule in the
|
||||
database.
|
||||
|
||||
The periodic tasks can be managed from the Django Admin interface, where you
|
||||
can create, edit and delete periodic tasks and how often they should run.
|
||||
|
||||
Using the Extension
|
||||
===================
|
||||
|
||||
Usage and installation instructions for this extension are available
|
||||
from the `Celery documentation`_.
|
||||
|
||||
.. _`Celery documentation`:
|
||||
http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#using-custom-scheduler-classes
|
||||
|
||||
Important Warning about Time Zones
|
||||
==================================
|
||||
|
||||
.. warning::
|
||||
If you change the Django ``TIME_ZONE`` setting your periodic task schedule
|
||||
will still be based on the old timezone.
|
||||
|
||||
To fix that you would have to reset the "last run time" for each periodic task:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> from django_celery_beat.models import PeriodicTask, PeriodicTasks
|
||||
>>> PeriodicTask.objects.all().update(last_run_at=None)
|
||||
>>> PeriodicTasks.update_changed()
|
||||
|
||||
|
||||
|
||||
.. note::
|
||||
This will reset the state as if the periodic tasks have never run before.
|
||||
|
||||
|
||||
Models
|
||||
======
|
||||
|
||||
- ``django_celery_beat.models.PeriodicTask``
|
||||
|
||||
This model defines a single periodic task to be run.
|
||||
|
||||
It must be associated with a schedule, which defines how often the task should
|
||||
run.
|
||||
|
||||
- ``django_celery_beat.models.IntervalSchedule``
|
||||
|
||||
A schedule that runs at a specific interval (e.g. every 5 seconds).
|
||||
|
||||
- ``django_celery_beat.models.CrontabSchedule``
|
||||
|
||||
A schedule with fields like entries in cron:
|
||||
``minute hour day-of-week day_of_month month_of_year``.
|
||||
|
||||
- ``django_celery_beat.models.PeriodicTasks``
|
||||
|
||||
This model is only used as an index to keep track of when the schedule has
|
||||
changed.
|
||||
|
||||
Whenever you update a ``PeriodicTask`` a counter in this table is also
|
||||
incremented, which tells the ``celery beat`` service to reload the schedule
|
||||
from the database.
|
||||
|
||||
If you update periodic tasks in bulk, you will need to update the counter
|
||||
manually:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> from django_celery_beat.models import PeriodicTasks
|
||||
>>> PeriodicTasks.update_changed()
|
||||
|
||||
Example creating interval-based periodic task
|
||||
---------------------------------------------
|
||||
|
||||
To create a periodic task executing at an interval you must first
|
||||
create the interval object:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> from django_celery_beat.models import PeriodicTask, IntervalSchedule
|
||||
|
||||
# executes every 10 seconds.
|
||||
>>> schedule, created = IntervalSchedule.objects.get_or_create(
|
||||
... every=10,
|
||||
... period=IntervalSchedule.SECONDS,
|
||||
... )
|
||||
|
||||
That's all the fields you need: a period type and the frequency.
|
||||
|
||||
You can choose between a specific set of periods:
|
||||
|
||||
|
||||
- ``IntervalSchedule.DAYS``
|
||||
- ``IntervalSchedule.HOURS``
|
||||
- ``IntervalSchedule.MINUTES``
|
||||
- ``IntervalSchedule.SECONDS``
|
||||
- ``IntervalSchedule.MICROSECONDS``
|
||||
|
||||
.. note::
|
||||
If you have multiple periodic tasks executing every 10 seconds,
|
||||
then they should all point to the same schedule object.
|
||||
|
||||
There's also a "choices tuple" available should you need to present this
|
||||
to the user:
|
||||
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> IntervalSchedule.PERIOD_CHOICES
|
||||
|
||||
|
||||
Now that we have defined the schedule object, we can create the periodic task
|
||||
entry:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> PeriodicTask.objects.create(
|
||||
... interval=schedule, # we created this above.
|
||||
... name='Importing contacts', # simply describes this periodic task.
|
||||
... task='proj.tasks.import_contacts', # name of task.
|
||||
... )
|
||||
|
||||
|
||||
Note that this is a very basic example, you can also specify the arguments
|
||||
and keyword arguments used to execute the task, the ``queue`` to send it
|
||||
to[*], and set an expiry time.
|
||||
|
||||
Here's an example specifying the arguments, note how JSON serialization is
|
||||
required:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> import json
|
||||
>>> from datetime import datetime, timedelta
|
||||
|
||||
>>> PeriodicTask.objects.create(
|
||||
... interval=schedule, # we created this above.
|
||||
... name='Importing contacts', # simply describes this periodic task.
|
||||
... task='proj.tasks.import_contacts', # name of task.
|
||||
... args=json.dumps(['arg1', 'arg2']),
|
||||
... kwargs=json.dumps({
|
||||
... 'be_careful': True,
|
||||
... }),
|
||||
... expires=datetime.utcnow() + timedelta(seconds=30)
|
||||
... )
|
||||
|
||||
|
||||
.. [*] you can also use low-level AMQP routing using the ``exchange`` and
|
||||
``routing_key`` fields.
|
||||
|
||||
Example creating crontab-based periodic task
|
||||
--------------------------------------------
|
||||
|
||||
A crontab schedule has the fields: ``minute``, ``hour``, ``day_of_week``,
|
||||
``day_of_month`` and ``month_of_year``, so if you want the equivalent
|
||||
of a ``30 * * * *`` (execute 30 minutes past every hour) crontab entry you specify:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> from django_celery_beat.models import CrontabSchedule, PeriodicTask
|
||||
>>> schedule, _ = CrontabSchedule.objects.get_or_create(
|
||||
... minute='30',
|
||||
... hour='*',
|
||||
... day_of_week='*',
|
||||
... day_of_month='*',
|
||||
... month_of_year='*',
|
||||
... timezone=zoneinfo.ZoneInfo('Canada/Pacific')
|
||||
... )
|
||||
|
||||
The crontab schedule is linked to a specific timezone using the 'timezone' input parameter.
|
||||
|
||||
Then to create a periodic task using this schedule, use the same approach as
|
||||
the interval-based periodic task earlier in this document, but instead
|
||||
of ``interval=schedule``, specify ``crontab=schedule``:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> PeriodicTask.objects.create(
|
||||
... crontab=schedule,
|
||||
... name='Importing contacts',
|
||||
... task='proj.tasks.import_contacts',
|
||||
... )
|
||||
|
||||
Temporarily disable a periodic task
|
||||
-----------------------------------
|
||||
|
||||
You can use the ``enabled`` flag to temporarily disable a periodic task:
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
>>> periodic_task.enabled = False
|
||||
>>> periodic_task.save()
|
||||
|
||||
|
||||
Example running periodic tasks
|
||||
-----------------------------------
|
||||
|
||||
The periodic tasks still need 'workers' to execute them.
|
||||
So make sure the default **Celery** package is installed.
|
||||
(If not installed, please follow the installation instructions
|
||||
here: https://github.com/celery/celery)
|
||||
|
||||
Both the worker and beat services need to be running at the same time.
|
||||
|
||||
1. Start a Celery worker service (specify your Django project name)::
|
||||
|
||||
$ celery -A [project-name] worker --loglevel=info
|
||||
|
||||
|
||||
2. As a separate process, start the beat service (specify the Django scheduler)::
|
||||
|
||||
$ celery -A [project-name] beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
|
||||
|
||||
**OR** you can use the -S (scheduler flag), for more options see ``celery beat --help``)::
|
||||
|
||||
$ celery -A [project-name] beat -l info -S django
|
||||
|
||||
Also, as an alternative, you can run the two steps above (worker and beat services)
|
||||
with only one command (recommended for **development environment only**)::
|
||||
|
||||
$ celery -A [project-name] worker --beat --scheduler django --loglevel=info
|
||||
|
||||
|
||||
3. Now you can add and manage your periodic tasks from the Django Admin interface.
|
||||
|
||||
|
||||
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
You can install django-celery-beat either via the Python Package Index (PyPI)
|
||||
or from source.
|
||||
|
||||
To install using ``pip``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install --upgrade django-celery-beat
|
||||
|
||||
Downloading and installing from source
|
||||
--------------------------------------
|
||||
|
||||
Download the latest version of django-celery-beat from
|
||||
http://pypi.python.org/pypi/django-celery-beat
|
||||
|
||||
You can install it by doing the following :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ python3 -m venv .venv
|
||||
$ source .venv/bin/activate
|
||||
$ pip install --upgrade build pip
|
||||
$ tar xvfz django-celery-beat-0.0.0.tar.gz
|
||||
$ cd django-celery-beat-0.0.0
|
||||
$ python -m build
|
||||
$ pip install --upgrade .
|
||||
|
||||
After installation, add ``django_celery_beat`` to Django's settings module:
|
||||
|
||||
|
||||
.. code-block:: Python
|
||||
|
||||
INSTALLED_APPS = [
|
||||
...,
|
||||
'django_celery_beat',
|
||||
]
|
||||
|
||||
|
||||
Run the ``django_celery_beat`` migrations using:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ python manage.py migrate django_celery_beat
|
||||
|
||||
|
||||
Using the development version
|
||||
-----------------------------
|
||||
|
||||
With pip
|
||||
~~~~~~~~
|
||||
|
||||
You can install the latest main version of django-celery-beat using the following
|
||||
pip command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install git+https://github.com/celery/django-celery-beat#egg=django-celery-beat
|
||||
|
||||
|
||||
Developing django-celery-beat
|
||||
-----------------------------
|
||||
|
||||
To spin up a local development copy of django-celery-beat with Django admin at http://127.0.0.1:58000/admin/ run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ docker-compose up --build
|
||||
|
||||
Log-in as user ``admin`` with password ``admin``.
|
||||
|
||||
|
||||
TZ Awareness:
|
||||
-------------
|
||||
|
||||
If you have a project that is time zone naive, you can set ``DJANGO_CELERY_BEAT_TZ_AWARE=False`` in your settings file.
|
||||
|
||||
|
||||
.. |build-status| image:: https://github.com/celery/django-celery-beat/actions/workflows/test.yml/badge.svg
|
||||
:alt: Build status
|
||||
:target: https://github.com/celery/django-celery-beat/actions/workflows/test.yml
|
||||
|
||||
.. |coverage| image:: https://codecov.io/github/celery/django-celery-beat/coverage.svg?branch=main
|
||||
:target: https://codecov.io/github/celery/django-celery-beat?branch=main
|
||||
|
||||
.. |license| image:: https://img.shields.io/pypi/l/django-celery-beat.svg#foo
|
||||
:alt: BSD License
|
||||
:target: https://opensource.org/licenses/BSD-3-Clause
|
||||
|
||||
.. |wheel| image:: https://img.shields.io/pypi/wheel/django-celery-beat.svg#foo
|
||||
:alt: django-celery-beat can be installed via wheel
|
||||
:target: http://pypi.python.org/pypi/django-celery-beat/
|
||||
|
||||
.. |pyversion| image:: https://img.shields.io/pypi/pyversions/django-celery-beat.svg#foo
|
||||
:alt: Supported Python versions.
|
||||
:target: http://pypi.python.org/pypi/django-celery-beat/
|
||||
|
||||
.. |pyimp| image:: https://img.shields.io/pypi/implementation/django-celery-beat.svg#foo
|
||||
:alt: Support Python implementations.
|
||||
:target: http://pypi.python.org/pypi/django-celery-beat/
|
||||
|
||||
django-celery-beat as part of the Tidelift Subscription
|
||||
-------------------------------------------------------
|
||||
|
||||
The maintainers of django-celery-beat and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. `Learn more`_.
|
||||
|
||||
.. _Learn more: https://tidelift.com/subscription/pkg/pypi-django-celery-beat?utm_source=pypi-django-celery-beat&utm_medium=referral&utm_campaign=readme&utm_term=repo
|
||||
@@ -0,0 +1,91 @@
|
||||
django_celery_beat-2.8.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
django_celery_beat-2.8.1.dist-info/METADATA,sha256=3fYby0f5xzkAl-gOBFVTo1cLyJu2NHmMeWfzTYE7Deo,13346
|
||||
django_celery_beat-2.8.1.dist-info/RECORD,,
|
||||
django_celery_beat-2.8.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
django_celery_beat-2.8.1.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
||||
django_celery_beat-2.8.1.dist-info/entry_points.txt,sha256=aWg61iZ2ZQQCbF9hWdGOdAYJ31Qw-XDRe47HTLhoNTw,82
|
||||
django_celery_beat-2.8.1.dist-info/licenses/AUTHORS,sha256=xFPX6MmZ-8BZPT4YdppNNLLtKM8Xp1H-MuPOqtnJlno,3300
|
||||
django_celery_beat-2.8.1.dist-info/licenses/LICENSE,sha256=BCSrYX-Q4N7xc-hJO_ENa3RqouTFig3Ee_S6JvXEoMg,2620
|
||||
django_celery_beat-2.8.1.dist-info/top_level.txt,sha256=fD0_T6IRzFYIMjkGhwQB_yPwLoWWlmgjDgskgU8BMa0,19
|
||||
django_celery_beat/__init__.py,sha256=HbUT8HlYyxUgKPY2CPtKaWii85rtT_qu1py51FEgjyk,860
|
||||
django_celery_beat/__pycache__/__init__.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/admin.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/apps.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/clockedschedule.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/models.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/querysets.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/schedulers.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/signals.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/tzcrontab.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/utils.cpython-312.pyc,,
|
||||
django_celery_beat/__pycache__/validators.cpython-312.pyc,,
|
||||
django_celery_beat/admin.py,sha256=Ro0n2GW0lzojUkkhz3K2cgUQHDnePQ1Lghx9XxPpMc4,10204
|
||||
django_celery_beat/apps.py,sha256=QWvvtxJ1JKTMMQYgCLR0F_dEZhDRar4rw71LXOoVAYM,498
|
||||
django_celery_beat/clockedschedule.py,sha256=SD22jPa_6EGY8VkVHCueoZ1m1IAcGUMqCuQ1rzJfRjw,1270
|
||||
django_celery_beat/locale/de/LC_MESSAGES/django.mo,sha256=e8ooMqpE_c_ZQ0nZCcAYmtvIfZ9OpEZ9RBEw70N8Z9I,9971
|
||||
django_celery_beat/locale/de/LC_MESSAGES/django.po,sha256=RgWzZKS5o8k3NfFi3GQYLhSaGULZ0a9aTtxaym6OED4,15176
|
||||
django_celery_beat/locale/es/LC_MESSAGES/django.mo,sha256=DRjENq8mSTj1cMrNgm2X-CwVEsTYwRLyFV-5n_km1Tg,10292
|
||||
django_celery_beat/locale/es/LC_MESSAGES/django.po,sha256=ZHWyKwXq_ZqLd5CHtdNLPcXQyfOffzmiKE2ivBb8iWs,14646
|
||||
django_celery_beat/locale/fa/LC_MESSAGES/django.mo,sha256=3CfSyBX2Z8_gicjZdKGvEwkZUu48yxAaMQ-_DyJNLnE,11572
|
||||
django_celery_beat/locale/fa/LC_MESSAGES/django.po,sha256=mMN-uyTaNOrfqVfCM-ZI1UKdg1FeSyXuSd_m_eMncpw,16877
|
||||
django_celery_beat/locale/fr/LC_MESSAGES/django.mo,sha256=zb91JhhqJjXFLHDm96viDwjXxaOZRvib-xpIJ5nmVcc,11129
|
||||
django_celery_beat/locale/fr/LC_MESSAGES/django.po,sha256=mzoSDRw-NCF02dtaZTlEVnJlfynQDJCjlfqpgZOJN9w,15742
|
||||
django_celery_beat/locale/ko/LC_MESSAGES/django.mo,sha256=MCIrpSAY4Nhzj1Hkbtapxwj6jd165uhX_EK97wk9FfU,9511
|
||||
django_celery_beat/locale/ko/LC_MESSAGES/django.po,sha256=6mI1izLxMH5gCicOu0h1F0TzslZcCjstTnl9fAeV63A,14737
|
||||
django_celery_beat/locale/ru/LC_MESSAGES/django.mo,sha256=bwsT-t7GiFF3Nl0puQ_I9RLSAA0h-GKMar5NkV9Gch0,10557
|
||||
django_celery_beat/locale/ru/LC_MESSAGES/django.po,sha256=Semu68z6MJ3E_CYbnmVN5zQZV75Vxp5sQ7i2_Z9XKNI,16773
|
||||
django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=IuqMIDacZ6axUrI2KqOD_lqVvyH2FY95AWE5kik9dLo,8918
|
||||
django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.po,sha256=rmMQwOyksHQINtXUs8KqzSMdrtgN6tnxVtLEKpW5ZBw,14192
|
||||
django_celery_beat/migrations/0001_initial.py,sha256=a_HHmsn3JBGRpa2tebeoXphBeU0ZQAmg6z0v4DjyfD8,5559
|
||||
django_celery_beat/migrations/0002_auto_20161118_0346.py,sha256=FUOJ08yzM_f_OOuVLX-fSqAKuaOA01hJdzrwFKGz7Gk,2000
|
||||
django_celery_beat/migrations/0003_auto_20161209_0049.py,sha256=MgZ_4rpoDNyIU0fYQDwP39t5LFWRo36xi3y4mjKxgR4,664
|
||||
django_celery_beat/migrations/0004_auto_20170221_0000.py,sha256=K0g32NM3jJ0-s47DFPkGSk5cDvZ4Dk82698A22KBxns,453
|
||||
django_celery_beat/migrations/0005_add_solarschedule_events_choices.py,sha256=3FUA0S16IqWhgpMtFlXV9bsoRsicw5TItiyulsd2jzg,904
|
||||
django_celery_beat/migrations/0006_auto_20180210_1226.py,sha256=9zqIxfLQ9E12Ch3mfXE99Yqnr3qgPZSdcbnTRTCrB8g,966
|
||||
django_celery_beat/migrations/0006_auto_20180322_0932.py,sha256=OoMtyU1G5vrJqf7DJV0GjuPKamkpyJmrc30vY7nx81I,1604
|
||||
django_celery_beat/migrations/0006_periodictask_priority.py,sha256=D7QsK1jgp_6hLJ7FDmxGf2VN1QZg-8vSFgvZsLsjXNE,1011
|
||||
django_celery_beat/migrations/0007_auto_20180521_0826.py,sha256=R9NOPgBl9jDct-8NfEuh0iV39StOzBqHxXDWZW0HfV0,750
|
||||
django_celery_beat/migrations/0008_auto_20180914_1922.py,sha256=7Uz9E3CsTGjowAr_ai8QD6j30awIOjoJB6UrQx7jLpE,1844
|
||||
django_celery_beat/migrations/0009_periodictask_headers.py,sha256=92VLamj0Fuv-rlCEMqHtQlZfQMIVWTlVzp6fH4kAhDk,567
|
||||
django_celery_beat/migrations/0010_auto_20190429_0326.py,sha256=43w9jKq_woxWcOPs9ZzUiLuyQyYZeRGO6ZVhRLlTB1M,10551
|
||||
django_celery_beat/migrations/0011_auto_20190508_0153.py,sha256=Pk0IZHVCgxc7g2Rjrp3H2s3KmA6nXXUuF6SvuNfi2FE,1362
|
||||
django_celery_beat/migrations/0012_periodictask_expire_seconds.py,sha256=wWlVJKUMfahy0_028aGZzRlQmIKq2hs8xxjW6V9b46o,583
|
||||
django_celery_beat/migrations/0013_auto_20200609_0727.py,sha256=YLQzMwiu_zjIFEJVpoeCT6hI3SRpnunzMCsag21NuLQ,654
|
||||
django_celery_beat/migrations/0014_remove_clockedschedule_enabled.py,sha256=fJkROxhXD40Cg99XyCgsGxSJSWDoKl1m-49-kmVM17o,363
|
||||
django_celery_beat/migrations/0015_edit_solarschedule_events_choices.py,sha256=5E91lfKg3_SV3RrOockAq0DorOoJfAC7idMnR1DN7N8,824
|
||||
django_celery_beat/migrations/0016_alter_crontabschedule_timezone.py,sha256=3YRgqQ_Qf0NdWDBjeZLnDCiJzrWKMjMvBnqEndesdYI,759
|
||||
django_celery_beat/migrations/0017_alter_crontabschedule_month_of_year.py,sha256=TDs1_ziFZZivBXI8gWv7WJ4ScMU3MxHt-SQXLCpnsYs,669
|
||||
django_celery_beat/migrations/0018_improve_crontab_helptext.py,sha256=zvmYsouZKqXQd17U9EGwIDMhr-ZJUO5zUuRRR6MOOVE,690
|
||||
django_celery_beat/migrations/0019_alter_periodictasks_options.py,sha256=GxqMpTXLNIyZuCbSQ7VW5cg3s2iyGJJH_R5rnAcpPKY,433
|
||||
django_celery_beat/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
django_celery_beat/migrations/__pycache__/0001_initial.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0002_auto_20161118_0346.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0003_auto_20161209_0049.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0004_auto_20170221_0000.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0005_add_solarschedule_events_choices.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0006_auto_20180210_1226.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0006_auto_20180322_0932.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0006_periodictask_priority.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0007_auto_20180521_0826.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0008_auto_20180914_1922.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0009_periodictask_headers.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0010_auto_20190429_0326.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0011_auto_20190508_0153.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0012_periodictask_expire_seconds.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0013_auto_20200609_0727.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0014_remove_clockedschedule_enabled.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0015_edit_solarschedule_events_choices.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0016_alter_crontabschedule_timezone.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0017_alter_crontabschedule_month_of_year.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0018_improve_crontab_helptext.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/0019_alter_periodictasks_options.cpython-312.pyc,,
|
||||
django_celery_beat/migrations/__pycache__/__init__.cpython-312.pyc,,
|
||||
django_celery_beat/models.py,sha256=Nr0Z9_6W-W4t5gDQ8m7vtsG28L76SRMYwH1d7UG5ZO0,22564
|
||||
django_celery_beat/querysets.py,sha256=1lEGky43SFWfM5wyWJRBd-x0iCsFcbacRHrw61T6938,283
|
||||
django_celery_beat/schedulers.py,sha256=_J8Ltzf4YOdgHWc8ZjQFMmnsHaoZFyP3JM7xVJXVSKY,19368
|
||||
django_celery_beat/signals.py,sha256=KAKOC0dUOiNPPhe89zCmiK9fJm65fRQ4Hq01LNd_KWQ,1247
|
||||
django_celery_beat/templates/admin/djcelery/change_list.html,sha256=e61d2OOjd3TFSsh71ffacGtn1j_A_NPn_FopoTSfm10,725
|
||||
django_celery_beat/templates/admin/djcelery/change_periodictask_form.html,sha256=vWKUUTzqXV-2IyRx9LgUz3QXji3JAQVLViOK997J0Cs,826
|
||||
django_celery_beat/tzcrontab.py,sha256=ZCAx8hrSQ4Co5BIIgEBAzL3-CuPUyPxWpqio3AINbQc,2521
|
||||
django_celery_beat/utils.py,sha256=wQhMwO6KEt55aFS0pLg7kKWvfF0vg90kgLT7xvhET28,2103
|
||||
django_celery_beat/validators.py,sha256=nVNHjj7E_fZbG4sZ8E6anwxbspPy5H0Pm_9dLJm4dBI,2916
|
||||
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (80.4.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[celery.beat_schedulers]
|
||||
django = django_celery_beat.schedulers:DatabaseScheduler
|
||||
@@ -0,0 +1,97 @@
|
||||
=========
|
||||
AUTHORS
|
||||
=========
|
||||
:order: sorted
|
||||
|
||||
Aaron Ross <aaron@wawd.com>
|
||||
Adam Endicott
|
||||
Alex Stapleton <alex.stapleton@artfinder.com>
|
||||
Alexandr Artemyev <mogost@gmail.com>
|
||||
Alvaro Vega <avega@tid.es>
|
||||
Andrew Frankel
|
||||
Andrew Watts <andrewwatts@gmail.com>
|
||||
Andrii Kostenko <andrey@kostenko.name>
|
||||
Anton Novosyolov <anton.novosyolov@gmail.com>
|
||||
Ask Solem <ask@celeryproject.org>
|
||||
Asif Saif Uddin <auvipy@gmail.com>
|
||||
Augusto Becciu <augusto@becciu.org>
|
||||
Ben Firshman <ben@firshman.co.uk>
|
||||
Brad Jasper <bjasper@gmail.com>
|
||||
Brett Gibson <brett@swiftserve.com>
|
||||
Brian Rosner <brosner@gmail.com>
|
||||
Charlie DeTar <cfd@media.mit.edu>
|
||||
Christopher Grebs <cg@webshox.org>
|
||||
Dan LaMotte <lamotte85@gmail.com>
|
||||
Darjus Loktevic <darjus@amazon.com>
|
||||
David Fischer <david.fischer.ch@gmail.com>
|
||||
David Ziegler <david.ziegler@gmail.com>
|
||||
Diego Andres Sanabria Martin <diegueus9@gmail.com>
|
||||
Dmitriy Krasilnikov <krasilnikov.d.o@gmail.com>
|
||||
Donald Stufft <donald.stufft@gmail.com>
|
||||
Eldon Stegall
|
||||
Eugene Nagornyi <ideviantik@gmail.com>
|
||||
Felix Berger <bflat1@gmx.net
|
||||
Gabe Jackson <gabejackson@cxg.ch>
|
||||
Glenn Washburn <M8R-hkaf6e@mailinator.com>
|
||||
Gnrhxni <gnrhxni@outlook.com>
|
||||
Greg Taylor <gtaylor@duointeractive.com>
|
||||
Grégoire Cachet <gregoire@audacy.fr>
|
||||
Hari <haridara@gmail.com>
|
||||
Idan Zalzberg <idanzalz@gmail.com>
|
||||
Ionel Maries Cristian <ionel.mc@gmail.com>
|
||||
Jaeyoung Heo <jay.jaeyoung@gmail.com>
|
||||
Jannis Leidel <jannis@leidel.info>
|
||||
Jason Baker <amnorvend@gmail.com>
|
||||
Jay States <jstates@based.ca>
|
||||
Jeff Balogh <me@jeffbalogh.org>
|
||||
Jeff Fischer <jeffrey.fischer@gmail.com>
|
||||
Jeffrey Hu <zhiwehu@gmail.com>
|
||||
Jens Alm <jens.alm@mac.com>
|
||||
Jerzy Kozera <jerzy.kozera@gmail.com>
|
||||
Jesper Noehr <jesper@noehr.org>
|
||||
Jimmy Bradshaw <james.g.bradshaw@gmail.com>
|
||||
Joey Wilhelm <tarkatronic@gmail.com>
|
||||
John Andrews <johna@stjit011.(none)>
|
||||
John Watson <johnw@mahalo.com>
|
||||
Jonas Haag <jonas@lophus.org>
|
||||
Jonatan Heyman <jonatan@heyman.info>
|
||||
Josh Drake <m0nikr@is-0338.(none)>
|
||||
José Moreira <zemanel@zemanel.eu>
|
||||
Jude Nagurney <jude@pwan.org>
|
||||
Justin Quick <justquick@gmail.com>
|
||||
Keith Perkins <keith@tasteoftheworld.us>
|
||||
Kirill Panshin <kipanshi@gmail.com>
|
||||
Mark Hellewell <mark.hellewell@gmail.com>
|
||||
Mark Heppner <mheppner@users.noreply.github.com>
|
||||
Mark Lavin <markdlavin@gmail.com>
|
||||
Mark Stover <stovenator@gmail.com>
|
||||
Maxim Bodyansky <bodyansky@gmail.com>
|
||||
Michael Elsdoerfer <michael@elsdoerfer.com>
|
||||
Michael van Tellingen <m.vantellingen@lukkien.com>
|
||||
Mikhail Korobov <kmike84@gmail.com>
|
||||
Olivier Tabone <olivier.tabone@gmail.com>
|
||||
Patrick Altman <paltman@gmail.com>
|
||||
Piotr Bulinski <piotr@bulinski.pl>
|
||||
Piotr Sikora <piotr.sikora@frickle.com>
|
||||
Reza Lotun <rlotun@gmail.com>
|
||||
Rockallite Wulf <rockallite.wulf@gmail.com>
|
||||
Roger Barnes <roger@mindsocket.com.au>
|
||||
Roman Imankulov <roman@netangels.ru>
|
||||
Rune Halvorsen <runefh@gmail.com>
|
||||
Sam Cooke <sam@mixcloud.com>
|
||||
Scott Rubin <srubin@broadway.com>
|
||||
Sean Creeley <sean.creeley@gmail.com>
|
||||
Serj Zavadsky <fevral13@gmail.com>
|
||||
Simon Charette <charette.s@gmail.com>
|
||||
Spencer Ellinor <spencer.ellinor@gmail.com>
|
||||
Theo Spears <github@theos.me.uk>
|
||||
Timo Sugliani
|
||||
Vincent Driessen <vincent@datafox.nl>
|
||||
Vitaly Babiy <vbabiy86@gmail.com>
|
||||
Vladislav Poluhin <nuklea@gmail.com>
|
||||
Weipin Xia <weipin@me.com>
|
||||
Wes Turner <wes.turner@gmail.com>
|
||||
Wes Winham <winhamwr@gmail.com>
|
||||
Williams Mendez <wmendez27@gmail.com>
|
||||
WoLpH <Rick@Fawo.nl>
|
||||
dongweiming <ciici123@hotmail.com>
|
||||
@@ -0,0 +1,54 @@
|
||||
Copyright (c) 2015-2016 Ask Solem. All Rights Reserved.
|
||||
Copyright (c) 2012-2014 GoPivotal, Inc. All Rights Reserved.
|
||||
Copyright (c) 2009-2012 Ask Solem. All Rights Reserved.
|
||||
|
||||
django-celery-beat is licensed under The BSD License (3 Clause, also known as
|
||||
the new BSD license). The license is an OSI approved Open Source
|
||||
license and is GPL-compatible(1).
|
||||
|
||||
The license text can also be found here:
|
||||
http://www.opensource.org/licenses/BSD-3-Clause
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of Ask Solem nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Ask Solem OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Documentation License
|
||||
=====================
|
||||
|
||||
The documentation portion of django-celery-beat (the rendered contents of the
|
||||
"docs" directory of a software distribution or checkout) is supplied
|
||||
under the "Creative Commons Attribution-ShareAlike 4.0
|
||||
International" (CC BY-SA 4.0) License as described by
|
||||
http://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
Footnotes
|
||||
=========
|
||||
(1) A GPL-compatible license makes it possible to
|
||||
combine django-celery-beat with other software that is released
|
||||
under the GPL, it does not mean that we're distributing
|
||||
django-celery-beat under the GPL license. The BSD license, unlike the GPL,
|
||||
let you distribute a modified version without making your
|
||||
changes open source.
|
||||
@@ -0,0 +1 @@
|
||||
django_celery_beat
|
||||
Reference in New Issue
Block a user