Skip to main content

Cron-like task scheduler with overlap prevention and interval support

Project description

philiprehberger-task-scheduler

Tests PyPI version License

Cron-like task scheduler with overlap prevention and interval support.

Installation

pip install philiprehberger-task-scheduler

Usage

Cron Scheduling

from philiprehberger_task_scheduler import Scheduler

scheduler = Scheduler()

@scheduler.cron("*/5 * * * *")  # every 5 minutes
def check_health():
    ping_server()

@scheduler.cron("0 9 * * 1-5", overlap=False)  # weekdays at 9am
def daily_report():
    generate_and_send_report()

scheduler.start()  # blocks

Interval Scheduling

@scheduler.interval(seconds=30)
def poll_queue():
    process_messages()

@scheduler.interval(minutes=5, overlap=False)
def sync_data():
    pull_latest_data()

One-Shot Tasks

@scheduler.once(delay=10)  # run once after 10 seconds
def startup_task():
    warm_cache()

Background Mode

scheduler.start(background=True)
# ... your app continues running ...
scheduler.stop()

Programmatic API

scheduler.add("my-job", fn=my_function, cron="0 * * * *")
scheduler.add("poller", fn=poll, interval_seconds=60)
scheduler.remove("my-job")

Next Run Preview

for name, next_time in scheduler.next_runs():
    print(f"{name}: next at {next_time}")

Cron Syntax

Standard 5-field cron expressions:

┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Mon-Sun)
│ │ │ │ │
* * * * *

Supports: *, ranges (1-5), lists (1,3,5), steps (*/5).

API

Function / Class Description
Scheduler Cron-like task scheduler with cron(), interval(), once() decorators and add(), remove(), start(), stop() methods
Job A scheduled job with name, function, schedule config, and next_run property

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_task_scheduler-0.1.8.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file philiprehberger_task_scheduler-0.1.8.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.8.tar.gz
Algorithm Hash digest
SHA256 577770d539050fc457bce02136545da2a77bfcbf82ecebad7f45a9fd1649fdb6
MD5 799e9c98b1a13f41f2a9e6ace777e138
BLAKE2b-256 50058a35dc1ec15ea6414b2f3ebb0612f1e00124d72e95628ea6fb924352db16

See more details on using hashes here.

File details

Details for the file philiprehberger_task_scheduler-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 11216a7da0f8ee5f9d7a1000e63d454219163f0c95e32867be1993837e08dbb6
MD5 a37ef03311178caa54e1f1469aef539d
BLAKE2b-256 dc98d5e4b6c5daff3dda4b070804b79fb16ff9bedd8ddd70d5bb5dad296f3aa6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page