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.7.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for scheduler-0.8.7.tar.gz
Algorithm Hash digest
SHA256 ab54d6474649650c5d040b0cc0ae314c636b110fd0dd83254a0481bc93415ee5
MD5 a12fa1bb3ea1f3c5abe49af445ea279c
BLAKE2b-256 b77abb1870094994c5a805cd664d28cb20cd0dba47666477132e9cd47c9dc6d4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for scheduler-0.8.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0917fe659a4e62f3d306af7c36f77c5161ef73a7a645bf231db6bd19722b9a3e
MD5 953a146c9cfca9f039d1d8618d49d555
BLAKE2b-256 698b1be07b3915a79e1032958c5c89fa9296d9e8e09ba2b9bc40f86262d9ff00

See more details on using hashes here.

Supported by

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