--- id: scheduler version: "0.8.11" license: LGPL-3.0-only license_treatment: copyleft maintenance: active --- # scheduler — A simple in-process python scheduler library with asyncio, threading and timezone support. License: copyleft · Maintenance: active · Downloads: 104.1K/mo ## What it is and what it does Scheduler is a lightweight, in-process job scheduling library that lets you define and execute tasks on recurring or one-time schedules without external dependencies like Celery or APScheduler. It supports both asyncio and threading models, making it suitable for embedding directly into Python applications. You define jobs using a fluent API (e.g., `schedule.daily()`, `schedule.weekly()`, `schedule.cyclic()`), then call `exec_jobs()` periodically to run pending tasks. The library handles timezone-aware scheduling, job prioritization, tagging, and batching. The package is designed for scenarios where you want scheduling logic inside your own process rather than delegating to a separate service. It depends only on typeguard for runtime type checking and supports Python 3.10 through 3.14. The codebase is actively maintained (latest release in February 2026) and includes high test coverage. It's classified as Beta but has been in development since late 2021. Use it for: - Schedule periodic background tasks (data cleanup, report generation) within a web application or service without external job queues. - Implement recurring asyncio tasks with timezone support in async applications. - Define complex scheduling rules (e.g., 'run every Monday at 4:30 PM in a specific timezone') with a readable API. - Batch and prioritize multiple jobs, then execute them in a controlled order within your own event loop. - Build lightweight automation scripts that need to run tasks on fixed intervals or specific dates without external dependencies. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. An in-process job scheduler for Python that supports asyncio, threading, and timezone-aware execution with flexible scheduling rules (cyclic intervals, fixed times, weekdays, dates, weights, offsets, and execution counts). Yes, if you need in-process job scheduling without external services and can accept the LGPL-3.0 copyleft license. Low install friction, active maintenance, no known vulnerabilities, and support for modern Python versions make it a solid choice for embedded scheduling. Not suitable if you require a proprietary license or need distributed scheduling across multiple processes. ## Install pip install scheduler uv add scheduler poetry add scheduler ## Installing scheduler Before you install: Low friction install with a single runtime dependency (typeguard). Actively maintained with a recent release (180 days ago) and supports current Python versions (3.10–3.14). License in practice: Licensed under LGPL-3.0-only (copyleft). Derivative works and modifications must be distributed under the same license; proprietary use requires careful review of your distribution model. Quickstart: pip install scheduler from scheduler import Scheduler from scheduler.trigger import Monday import datetime as dt schedule = Scheduler() schedule.cyclic(dt.timedelta(minutes=10), lambda: print('task')) schedule.weekly(Monday(), lambda: print('task')) schedule.exec_jobs() # Call periodically in your event loop Requires Python 3.10 or later. For asyncio scheduling, you must integrate exec_jobs() calls into your own event loop or threading model. Verify before relying: - Whether the scheduler handles missed job executions or drift over long-running processes. - Performance characteristics under high job counts or rapid scheduling changes. - How job prioritization interacts with asyncio vs. threading execution models in practice. ## Package facts - License: LGPL-3.0-only (copyleft) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 104.1K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags in-process job scheduler, asyncio scheduler, task scheduling library, recurring job scheduling, timezone-aware scheduling, task-scheduling, asyncio-compatible, timezone-aware [View on SkillFed](https://skillfed.io/packages/scheduler) · [View on PyPI](https://pypi.org/project/scheduler/)