Skip to main content

Cron-like task scheduler with overlap prevention and interval support

Project description

philiprehberger-task-scheduler

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

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.0.tar.gz (4.8 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.0.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9219d6b96f7c80bdf8edd187759de6e76c5c55e4e9bf94d4194ec1b3c2610439
MD5 7038e83912ae00b6dc0acb1052de61a4
BLAKE2b-256 f95c75f4f64dd382a54af5b6cc21e9307e712ee1a044fd70d702a527f3ddea8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_task_scheduler-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81379e073c9fb1028dadb82008c48d3fdb4c389625148ea164f5c7c0d31cca59
MD5 ddb928a9a0b4c4ab34223ccf11877715
BLAKE2b-256 500eb13ae4ceabc650b98c7f006ae61b466164eb5d888051a28ca8a7592fa434

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