fooster-cron
fooster-cron is small cron-like scheduler designed for simple, recurring jobs. It supports a basic set of field values though is extensible by using any class inheriting from cron.Field
. Because this package is multiprocessing, shared objects must be synchronized, e.g. by multiprocessing.Manager
.
Usage
Below is basic usage for calling a function and printing a message every hour (at minute 0), a set of minutes every hour, and every 20 minutes per hour.
from fooster import cron
def count():
for i in range(5):
print(i)
scheduler = cron.Scheduler()
scheduler.add(cron.Job(count, minute=5))
scheduler.add(cron.Job(print, ['Hourly function, run every hour on the hour!'], name='hourly', minute=0))
scheduler.add(cron.Job(print, ['This one runs at special minutes!'], minute=[1, 2, 3, 5, 8, 13, 21, 34, 55]))
scheduler.add(cron.Job(print, ['This one runs every 20 minutes within each hour!'], minute=cron.Every(20)))
scheduler.start()
scheduler.join()
cron.Job
Prototype:
cron.Job(function, args=(), kwargs={}, name=None, minute=cron.All(), hour=cron.All(), day=cron.All(), month=cron.All(), weekday=cron.All())
Attributes:
Attribute | Value |
---|---|
function | function to call |
args | tuple of function arguments |
kwargs | dictionary of named function arguments |
minute | range [0, 59] |
hour | range [0, 23] |
day | range [1, 31] |
month | range [1, 12] |
weekday | range [0, 6], 0 is Monday |
cron.Field
To make a custom field, inherit from cron.Field
and change the __eq__
method to return True
when the passed value matches. The param member of the class is automatically populated with the passed argument unless the __init__
method is overridden. The value passed is a value from one of the time.struct_time
fields.
Examples
List
class List(cron.Field):
def __eq__(self, value):
return value in self.param
All
class All(cron.Field):
def __init__(self):
pass
def __eq__(self, value):
return True