Metadata-Version: 2.1
Name: APScheduler
Version: 4.0.0a2
Summary: In-process task scheduler with Cron-like capabilities
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
License: MIT
Project-URL: Homepage, https://github.com/agronholm/apscheduler
Keywords: scheduling cron
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
Requires-Dist: anyio (~=3.6)
Requires-Dist: attrs (>=21.3)
Requires-Dist: tenacity (~=8.0)
Requires-Dist: tzlocal (>=3.0)
Requires-Dist: typing-extensions ; python_version < "3.11"
Provides-Extra: asyncpg
Requires-Dist: asyncpg (>=0.20) ; extra == 'asyncpg'
Provides-Extra: cbor
Requires-Dist: cbor2 (>=5.0) ; extra == 'cbor'
Provides-Extra: doc
Requires-Dist: sphinx ; extra == 'doc'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'doc'
Requires-Dist: sphinx-tabs (>=3.3.1) ; extra == 'doc'
Provides-Extra: mongodb
Requires-Dist: pymongo (>=4) ; extra == 'mongodb'
Provides-Extra: mqtt
Requires-Dist: paho-mqtt (>=1.5) ; extra == 'mqtt'
Provides-Extra: redis
Requires-Dist: redis (>=4.0) ; extra == 'redis'
Provides-Extra: sqlalchemy
Requires-Dist: sqlalchemy (>=1.4.22) ; extra == 'sqlalchemy'
Provides-Extra: test
Requires-Dist: asyncpg (>=0.20) ; extra == 'test'
Requires-Dist: asyncmy (>=0.2.5) ; extra == 'test'
Requires-Dist: cbor2 (>=5.0) ; extra == 'test'
Requires-Dist: coverage ; extra == 'test'
Requires-Dist: freezegun ; extra == 'test'
Requires-Dist: paho-mqtt (>=1.5) ; extra == 'test'
Requires-Dist: psycopg2 ; extra == 'test'
Requires-Dist: pymongo (>=4) ; extra == 'test'
Requires-Dist: pymysql[rsa] ; extra == 'test'
Requires-Dist: pytest (>=5.0) ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-freezegun ; extra == 'test'
Requires-Dist: pytest-lazy-fixture ; extra == 'test'
Requires-Dist: pytest-mock ; extra == 'test'
Requires-Dist: redis[hiredis] (>=4.4.0rc1) ; extra == 'test'
Requires-Dist: sqlalchemy (>=1.4.22) ; extra == 'test'
Requires-Dist: trio ; extra == 'test'
Requires-Dist: greenlet (>=2.0.0a2) ; (python_version >= "3.11") and extra == 'test'

.. image:: https://github.com/agronholm/apscheduler/actions/workflows/test.yml/badge.svg
  :target: https://github.com/agronholm/apscheduler/actions/workflows/test.yml
  :alt: Build Status
.. image:: https://coveralls.io/repos/github/agronholm/apscheduler/badge.svg?branch=master
  :target: https://coveralls.io/github/agronholm/apscheduler?branch=master
  :alt: Code Coverage
.. image:: https://readthedocs.org/projects/apscheduler/badge/?version=latest
  :target: https://apscheduler.readthedocs.io/en/master/?badge=latest
  :alt: Documentation

.. warning:: The v4.0 series is provided as a **pre-release** and may change in a
   backwards incompatible fashion without any migration pathway, so do NOT use this
   release in production!

Advanced Python Scheduler (APScheduler) is a task scheduler and task queue system for
Python. It can be used solely as a job queuing system if you have no need for task
scheduling. It scales both up and down, and is suitable for both trivial, single-process
use cases as well as large deployments spanning multiple nodes. Multiple schedulers and
workers can be deployed to use a shared data store to provide both a degree of high
availability and horizontal scaling.

APScheduler comes in both synchronous and asynchronous flavors, making it a good fit for
both traditional, thread-based applications, and asynchronous (asyncio or Trio_)
applications. Documentation and examples are provided for integrating with either WSGI_
or ASGI_ compatible web applications.

Support is provided for persistent storage of schedules and jobs. This means that they
can be shared among multiple scheduler/worker instances and will survive process and
node restarts.

The built-in persistent data store back-ends are:

* PostgreSQL
* MySQL and derivatives
* SQLite
* MongoDB

The built-in event brokers (needed in scenarios with multiple schedulers and/or
workers):

* PostgreSQL
* Redis
* MQTT

The built-in scheduling mechanisms (*triggers*) are:

* Cron-style scheduling
* Interval-based scheduling (runs tasks on even intervals)
* Calendar-based scheduling (runs tasks on intervals of X years/months/weeks/days,
  always at the same time of day)
* One-off scheduling (runs a task once, at a specific date/time)

Different scheduling mechanisms can even be combined with so-called *combining triggers*
(see the documentation_ for details).

You can also implement your custom scheduling logic by building your own trigger class.
These will be treated no differently than the built-in ones.

Other notable features include:

* You can limit the maximum number of simultaneous jobs for a given task (function)
* You can limit the amount of time a job is allowed to start late
* Jitter (adjustable, random delays added to the run time of each scheduled job)

.. _Trio: https://pypi.org/project/trio/
.. _WSGI: https://wsgi.readthedocs.io/en/latest/what.html
.. _ASGI: https://asgi.readthedocs.io/en/latest/index.html
.. _documentation: https://apscheduler.readthedocs.io/en/master/

Documentation
=============

Documentation can be found
`here <https://apscheduler.readthedocs.io/en/master/?badge=latest>`_.

Source
======

The source can be browsed at `Github <https://github.com/agronholm/apscheduler>`_.

Reporting bugs
==============

A `bug tracker <https://github.com/agronholm/apscheduler/issues>`_ is provided by
GitHub.

Getting help
============

If you have problems or other questions, you can either:

* Ask in the `apscheduler <https://gitter.im/apscheduler/Lobby>`_ room on Gitter
* Post a question on `GitHub discussions`_, or
* Post a question on StackOverflow_ and add the ``apscheduler`` tag

.. _GitHub discussions: https://github.com/agronholm/apscheduler/discussions/categories/q-a
.. _StackOverflow: http://stackoverflow.com/questions/tagged/apscheduler
