Easy async scheduling with a nice interface
Project description
EAScheduler
Easy async task scheduling
Easy Async Scheduler (or EAScheduler) is a lightweight asyncio scheduler with a nice and easy to use interface.
The home automation software HABApp make use of EAScheduler.
Documentation
The documentation can be found here
Example
import eascheduler
async def my_coro() -> None:
print('Hello')
# If you want something easy that you can use out of the box just use the default scheduler
scheduler = eascheduler.get_default_scheduler()
# -------------------------------------------------------------------------------------------------------
# Different job types
# -------------------------------------------------------------------------------------------------------
# Run once in 30s
job_once = scheduler.once(30, my_coro)
# Countdown
countdown = scheduler.countdown(30, my_coro)
countdown.reset() # make countdown start (again)
countdown.stop() # stop countdown
countdown.set_countdown(15) # set different countdown time which will be used for the next reset call
# Trigger job which runs continuously, e.g.
# every day at 8
job_every = scheduler.at(scheduler.triggers.time('08:00:00'), my_coro)
# for the first time in 10 mins, then every hour
job_every = scheduler.at(scheduler.triggers.interval(600, 3600), my_coro)
# -------------------------------------------------------------------------------------------------------
# Restricting the trigger with a filter.
# Only when the filter condition passes the time will be taken as the next time
# every Fr-So at 8
scheduler.at(
scheduler.triggers.time('08:00:00').only_at(scheduler.filters.weekdays('Fr-So')),
my_coro
)
# Triggers can be grouped
# Mo-Fr at 7, Sa at 8
scheduler.at(
scheduler.triggers.group(
scheduler.triggers.time('07:00:00').only_at(scheduler.filters.weekdays('Mo-Fr')),
scheduler.triggers.time('08:00:00').only_at(scheduler.filters.weekdays('Fr-So')),
),
my_coro
)
# Filters can be grouped with any or all
# On the first sunday of the month at 8
scheduler.at(
scheduler.triggers.time('08:00:00').only_at(
scheduler.filters.all(
scheduler.filters.days('1-7'),
scheduler.filters.weekdays('So'),
),
),
my_coro
)
# -------------------------------------------------------------------------------------------------------
# The trigger time can also be modified
# On sunrise, but not earlier than 8
scheduler.at(
scheduler.triggers.sunset().earliest('08:00:00'),
my_coro
)
# One hour before sunset
scheduler.at(
scheduler.triggers.sunset().offset(timedelta(hours=-1)),
my_coro
)
Changelog
0.2.0 (2024-11-13)
- Complete rewrite
0.1.11 (2023-09-11)
- Fixed an issue with a possible infinite loop
0.1.10 (2023-08-24)
- Added option to add a callback to the job when the execution time changes
0.1.9 (2023-07-19)
- Fix for days when the sun doesn't rise or set. In that case the next date with a sunrise/sunset will be returned.
0.1.8 (2022-12-14)
- Fix for OneTimeJob incorrectly showing a remaining time after the execution
- Dependency update
0.1.7 (2022-07-27)
- Added py.typed
0.1.6 (2022-07-27)
- Removed Python 3.7 support
- Fixed setup issues
0.1.5 (2022-02-14)
- Jobs have a remaining function
- CountdownJob has a stop function
0.1.4 (2021-06-01)
- Added option to pause and resume the scheduler
- Jobs don't have to be in the future any more
- Sorted imports with isort
0.1.3 (2021-05-06)
- Fixed a bug where a negative offset/jitter could result in multiple executions
0.1.2 (2021-05-06)
- Fixed a bug where
.every(None, ...)
would result in an error
0.1.1 (2021-05-02)
- Implemented a much nicer API and fixed some bugs
0.1.0 (2021-04-21)
- Fixed a race condition
- Added tests
0.0.9 (2021-04-19)
- Fixes for wrong timezone
- Added tests
0.0.8 (2021-04-17)
- Fixes for SunJob, ReoccurringJob
- Added tests
0.0.7 (2021-04-15)
- Fixes for Sunrise/Sunset
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eascheduler-0.2.0.tar.gz
(31.9 kB
view details)
Built Distribution
File details
Details for the file eascheduler-0.2.0.tar.gz
.
File metadata
- Download URL: eascheduler-0.2.0.tar.gz
- Upload date:
- Size: 31.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e770e85e2fa1bb49da7b68d8a9a3fc2d39e2c5c845063c3cbd5c4a3555ef2021 |
|
MD5 | 9102fbc04e649022f9219d37491bc8f4 |
|
BLAKE2b-256 | 76c52d822649adb5da30648ea06939677e8c48f8ab441da7ca64f6f64dc9de05 |
File details
Details for the file EAScheduler-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: EAScheduler-0.2.0-py3-none-any.whl
- Upload date:
- Size: 45.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8299d0c639c30e5b96370e36c7ba37e33c8170eb9fd030f230c22effd33fa851 |
|
MD5 | 8506e5ff4cb0505b9c47bf81a8d02818 |
|
BLAKE2b-256 | fd2d3f4757ec0528963e98626ce8555affcdb684660458dfd49d7d08547ca9d9 |