Metadata-Version: 2.1
Name: APScheduler
Version: 4.0.0a4
Summary: In-process task scheduler with Cron-like capabilities
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
License: MIT
Project-URL: Documentation, https://apscheduler.readthedocs.io/en/master/
Project-URL: Changelog, https://apscheduler.readthedocs.io/en/master/versionhistory.html
Project-URL: Source code, https://github.com/agronholm/apscheduler
Project-URL: Issue tracker, https://github.com/agronholm/apscheduler/issues
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.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
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
Requires-Dist: anyio ~=4.0
Requires-Dist: attrs >=21.3
Requires-Dist: tenacity ~=8.0
Requires-Dist: tzlocal >=3.0
Requires-Dist: typing-extensions >=4.0 ; 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-rtd-theme >=1.3.0 ; 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.4.0 ; extra == 'redis'
Provides-Extra: sqlalchemy
Requires-Dist: sqlalchemy >=2.0.19 ; extra == 'sqlalchemy'
Provides-Extra: test
Requires-Dist: APScheduler[cbor,mongodb,mqtt,redis,sqlalchemy] ; extra == 'test'
Requires-Dist: aiosqlite >=0.19 ; extra == 'test'
Requires-Dist: anyio[trio] ; extra == 'test'
Requires-Dist: coverage >=7 ; extra == 'test'
Requires-Dist: freezegun ; extra == 'test'
Requires-Dist: paho-mqtt >=1.5 ; extra == 'test'
Requires-Dist: psycopg ; extra == 'test'
Requires-Dist: pymongo >=4 ; extra == 'test'
Requires-Dist: pymysql[rsa] ; extra == 'test'
Requires-Dist: pytest >=7.4.0 ; extra == 'test'
Requires-Dist: pytest-freezer ; extra == 'test'
Requires-Dist: pytest-lazy-fixture ; extra == 'test'
Requires-Dist: pytest-mock ; extra == 'test'
Requires-Dist: asyncpg >=0.20 ; (platform_python_implementation == "CPython") and extra == 'test'
Requires-Dist: asyncmy >=0.2.5 ; (platform_python_implementation == "CPython") and extra == 'test'
Requires-Dist: PySide6 >=6.6 ; (platform_python_implementation == "CPython") and extra == 'test'
Requires-Dist: uwsgi ; (platform_python_implementation == "CPython" and platform_system == "Linux") 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
