Skip to main content

A simple in-process python scheduler library with asyncio, threading and timezone support.

Project description

scheduler

A simple in-process python scheduler library with asyncio, threading and timezone support. Schedule tasks by their time cycles, fixed times, weekdays, dates, weights, offsets and execution counts and automate Jobs.

repository mirror license pipeline status coverage report Code style: black Imports: isort

pkgversion versionsupport Downloads Week Downloads Total Documentation


If you find the scheduler library beneficial, please consider supporting the project by starring it on GitHub.

GitHub Repo stars

Features

Installation

pip

scheduler can be installed directly from the PyPI repositories with:

pip install scheduler

Alternatively install scheduler from the git repository with:

git clone https://gitlab.com/DigonIO/scheduler.git
cd scheduler
pip install .

Arch Linux

The PKGBUILD file can be utilized from the Arch Build System. Download the PKGBUILD file and from within the containing folder run

makepkg -i

Example: How to schedule Jobs

The following example shows how the Scheduler is instantiated and how basic Jobs are created. For advanced scheduling examples please visit the online documentation.

import datetime as dt

from scheduler import Scheduler
from scheduler.trigger import Monday, Tuesday

def foo():
    print("foo")

schedule = Scheduler()

schedule.cyclic(dt.timedelta(minutes=10), foo)

schedule.minutely(dt.time(second=15), foo)
schedule.hourly(dt.time(minute=30, second=15), foo)
schedule.daily(dt.time(hour=16, minute=30), foo)
schedule.weekly(Monday(), foo)
schedule.weekly(Monday(dt.time(hour=16, minute=30)), foo)

schedule.once(dt.timedelta(minutes=10), foo)
schedule.once(Tuesday(), foo)
schedule.once(dt.datetime(year=2022, month=2, day=15, minute=45), foo)

A human readable overview of the scheduled jobs can be created with a simple print statement:

print(schedule)
max_exec=inf, tzinfo=None, priority_function=linear_priority_function, #jobs=9

type     function / alias due at                 due in      attempts weight
-------- ---------------- ------------------- --------- ------------- ------
MINUTELY foo()            2021-05-26 03:55:15   0:00:14         0/inf      1
CYCLIC   foo()            2021-05-26 04:05:00   0:09:59         0/inf      1
ONCE     foo()            2021-05-26 04:05:00   0:09:59           0/1      1
HOURLY   foo()            2021-05-26 04:30:15   0:35:14         0/inf      1
DAILY    foo()            2021-05-26 16:30:00  12:34:59         0/inf      1
WEEKLY   foo()            2021-05-31 00:00:00    4 days         0/inf      1
WEEKLY   foo()            2021-05-31 16:30:00    5 days         0/inf      1
ONCE     foo()            2021-06-01 00:00:00    5 days           0/1      1
ONCE     foo()            2022-02-15 00:45:00  264 days           0/1      1

Executing pending Jobs periodically can be achieved with a simple loop:

import time

while True:
    schedule.exec_jobs()
    time.sleep(1)

Documentation

View the API documentation online.

Sponsor



At Digon.IO, we provide your developer team with our knowledge and experience in the field of Large Language Models (LLMs).

We specialize in consulting, data engineering, and data science to fine-tune AI services for seamless integration into your projects.

License

This free and open source software (FOSS) is published under the LGPLv3 license.

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

scheduler-0.8.8.tar.gz (32.1 kB view details)

Uploaded Source

Built Distribution

scheduler-0.8.8-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file scheduler-0.8.8.tar.gz.

File metadata

  • Download URL: scheduler-0.8.8.tar.gz
  • Upload date:
  • Size: 32.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.9

File hashes

Hashes for scheduler-0.8.8.tar.gz
Algorithm Hash digest
SHA256 4575a12cd269e4e4896409836fd911560cb63fb7634360ee62aa2fa4ec495ffd
MD5 b17e09bedce2d5a018f7416b955259e7
BLAKE2b-256 5f6d2b176a4f94dd2deedcd6f7b887ae26d5d7b0866e5a9e2ae90b6e986a8a94

See more details on using hashes here.

File details

Details for the file scheduler-0.8.8-py3-none-any.whl.

File metadata

  • Download URL: scheduler-0.8.8-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.9

File hashes

Hashes for scheduler-0.8.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8f52ea6390757e4f42a8becbcb474e7744a3082ea5e1cdb0c972ea8b2c5d1891
MD5 51c96e8845cf4e037579e295e2029b51
BLAKE2b-256 aa584372d0a9462e70e7ec7833bdf1c48c6a9e531918b736608d0b158d71e787

See more details on using hashes here.

Supported by

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