Skip to content

Kettled is a fast, efficient and secure daemon-based event scheduler for UNIX-systems that spawns an independent process which keeps track of your scheduled events with a nice CLI API.

License

Notifications You must be signed in to change notification settings

solarvenom/kettled.py

Repository files navigation

🫖 kettled (kettle.d) 🫖

A lightweight, efficient and secure scheduler.

repository mirror Build Status release license

Kettled is a fast, efficient and secure daemon-based event scheduler for UNIX-systems that spawns an independent process which keeps track of your scheduled events with a nice CLI UI.

Features

- ✨ Built with python built-in modules only. No third-party modules involved.
- ✨ An easy-to-use CLI UI to manage and monitor your scheduler daemon.

Installation

kettled can be installed directly from the PyPI repositories with:

pip install kettled

Example: How to use kettled

The following example shows how Kettled is instantiated and how basic events are scheduled.

import datetime as dt

from kettled import Kettled, RECURRENCY_OPTIONS_ENUM, RELATIVE_DATETIME_OPTIONS_ENUM, FALLBACK_DIRECTIVES_ENUM

def foo():
    print("foo")

kettled = Kettled()
kettled.init()

event_datetime = dt.datetime.now() + dt.timedelta(hours=2)

kettled.add(
    event_name="readme_event", 
    date_time=event_datetime, 
    recurrency=RECURRENCY_OPTIONS_ENUM.NOT_RECURRING.value,
    fallback_directive=FALLBACK_DIRECTIVES_ENUM.EXECUTE_AS_SOON_AS_POSSIBLE.value,
    callback=foo
)

kettled.update(event_name="readme_event", new_date_time=RELATIVE_DATETIME_OPTIONS_ENUM.THIRTY_MINUTES.value)

kettled.delete(event_name="readme_event")

CLI interface usage

To launch kettled from the terminal simply issue kettled start:

user@pc$ kettled start 
🫖 kettled started.

Check daemon status via kettled status:

user@pc$ kettled status
🫖 kettled has been up for 27 minutes and 56 seconds.

You can add events from the terminal by issueing kettled add and inputing the event data via prompts:

user@pc$ kettled add
🫖 Please enter event name: readme_event
🫖 Please enter event scheduled date: 2024-11-05 10:17:57.587410
🫖 Please enter event recurrency (Will default to 'not_recurring' if not provided):
🫖 Please enter event fallback directive (Will default to 'execute_as_soon_as_possible' if not provided):
🫖 Please enter event callback: print('this is a callback function')

To update a scheduled event issue kettled update and go through the prompts to modify event data:

user@pc$ kettled update
🫖 Please enter the name of event be modified: readme_event
🫖 Please enter the new event name or leave blank to leave unchanged: updated_readme_event
🫖 Please enter the new event schdeuled date or leave blank to keep unchanged: 
🫖 Please enter the new event recurrency or leave blank to keep unchanged: 
🫖 Please enter the new event fallback directive or leave blank to keep unchanged: 
🫖 Please enter the new event callback or leave blank to keep unchanged: 

To check all scheduled events just issue kettled list:

user@pc$ kettled list
user@pc$ 
_______________________________________________________________________________________________________________________
| Index |           Event Name           | Scheduled Date & Time  |      Recurrency      |     Fallback Directive      |
|----------------------------------------------------------------------------------------------------------------------|
|   1   |     updated_readme_event       |  2025-02-24T15:41:30   |    not_recurring     | execute_as_soon_as_possible |
|_______|________________________________|________________________|______________________|_____________________________|

Finally, to stop the kettled deamon simply issue kettled stop:

user@pc$ kettled stop
🫖 kettled was terminated.

About

Kettled is a fast, efficient and secure daemon-based event scheduler for UNIX-systems that spawns an independent process which keeps track of your scheduled events with a nice CLI API.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages