Skip to main content

a small cron-like scheduler in Python

Project description

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for fooster-cron, version 0.9.0
Filename, size File type Python version Upload date Hashes
Filename, size fooster_cron-0.9.0-py3-none-any.whl (5.4 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size fooster-cron-0.9.0.tar.gz (4.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page