APScheduler
In-process task scheduler with Cron-like capabilities
Install
apscheduler on PyPI
pip
pip install apscheduleruv
uv add apschedulerpoetry
poetry add apschedulerPackage facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — tzlocal, backports.zoneinfo |
| Maintenance | actively maintained — 46 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: apscheduler-3.11.3-py3-none-any.whl
Keywords: scheduling, cron
About APScheduler
from the package's own PyPI description — quoted content, verbatim
.. image:: https://github.com/agronholm/apscheduler/workflows/Python%20codeqa/test/badge.svg?branch=3.x :target: https://github.com/agronholm/apscheduler/actions?query=workflow%3A%22Python+codeqa%2Ftest%22+branch%3A3.x :alt: Build Status .. image:: https://coveralls.io/repos/github/agronholm/apscheduler/badge.svg?branch=3.x :target: https://coveralls.io/github/agronholm/apscheduler?branch=3.x :alt: Code Coverage .. image:: https://readthedocs.org/projects/apscheduler/badge/?version=3.x :target: https://apscheduler.readthedocs.io/en/master/?badge=3.x :alt: Documentation
Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed later, either just once or periodically. You can add new jobs or remove old ones on the fly as you please. If you store your jobs in a database, they will also survive scheduler restarts and maintain their state. When the scheduler is restarted, it will then run all the jobs it should have run while it was offline [#f1]_.
Among other things, APScheduler can be used as a cross-platform, application specific replacement to platform specific schedulers, such as the cron daemon or the...
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
APScheduler is an in-process task scheduler that lets you run Python code on a schedule—once, at intervals, or using cron expressions—with support for persistent job storage and multiple execution frameworks.
Low friction: pure Python wheel with only two lightweight runtime dependencies (tzlocal and backports.zoneinfo). Actively maintained with recent releases and strong community engagement (7605 GitHub stars).
MIT license permits commercial and private use with minimal restrictions—you may use, modify, and distribute APScheduler freely provided you include the original license notice.
Usage
from apscheduler.schedulers.background import BackgroundScheduler
import atexit
sched = BackgroundScheduler()
sched.add_job(lambda: print('Job'), 'interval', seconds=10)
sched.start()
atexit.register(sched.shutdown)
Python 3.8 or later required; tzlocal and backports.zoneinfo must be installed (pulled in automatically).
Verdict: APScheduler is a mature, well-maintained production-grade scheduler with no known vulnerabilities, minimal dependencies, and broad framework integration. Its permissive MIT license and active development make it a reliable choice for embedding scheduling into Python applications.
Needs verification
- Whether the scheduler persists jobs across restarts without explicit database configuration.
- Performance characteristics under high job volume or with large job queues.
- Compatibility guarantees with Python 3.14 (listed in classifiers but may be pre-release).
Similar packages
unclear · top 1,000 on PyPI
daskpermissive · top 1,000 on PyPI
temporaliopermissive · top 1,000 on PyPI
greenletpermissive · top 100 on PyPI
cron-descriptorpermissive · top 1,000 on PyPI
async-timeoutpermissive · top 1,000 on PyPI
celerypermissive · top 1,000 on PyPI
apache-airflowpermissive · top 1,000 on PyPI
croniterpermissive · top 1,000 on PyPI
python-telegram-botcopyleft · top 1,000 on PyPI