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.

Install

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).

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.5.tar.gz (5.2 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.5.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0c612361e942370f5f22950d5e15bbdebd116ad83b320989f3a2ed967ecbe753
MD5 29e1dc1d3290dcd7f16a8e956be9f258
BLAKE2b-256 8a54556664fffa463b9d8c463063958809493501d180cc6e2391444bf914e68c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 14d977e1f2aa1b82ba3aed64ba6ce70020802ddca8ac80dd6f736ad84747f6b1
MD5 c01f6a31fa93311d0653b869fc9afec3
BLAKE2b-256 92511b93a82b0ec96f630b114c1a3b88c6d07b4092490896093f247ad70ba749

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