Skip to content
This repository has been archived by the owner on Sep 20, 2020. It is now read-only.
/ pysprinkler Public archive

A small python library that helps you write co-routines in an event-driven way.

License

Notifications You must be signed in to change notification settings

int3rlop3r/pysprinkler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pysprinkler

A small python library that helps you write co-routines in an event-driven way. In short it 'sprinkles' data passed to the '.sprinkle' function to all sub-classes of 'Task' in a round robin manner.

Install:

pip install pysprinkler

A simple example:

from pysprinkler import Task, Sprinkler

class RemoteDBHandler(Task):

    def __init__(self):
        print("Started RemoteDBHandler")

    def on_data(self, data):
        print("RemoteDBHandler: {}".format(data))

    def on_end(self):
        print("Closing RemoteDBHandler")
 

class LocalDBHandler(Task):

    def __init__(self):
        print("Started LocalDBHandler")

    def on_data(self, data):
        print("LocalDBHandler: {}".format(data))

    def on_end(self):
        print("Closing LocalDBHandler")

class STNHandler(Task):

    def __init__(self):
        print("Started STNHandler")

    def on_data(self, data):
        print("STNHandler: {}".format(data))

    def on_end(self):
        print("Closing STNHandler")

rdb_handler = RemoteDBHandler()
ldb_handler = LocalDBHandler()
stn_handler = STNHandler()

s = Sprinkler([rdb_handler, ldb_handler, stn_handler])
s.start()

lines = ["Line 1", "Line 2", "Line 3", "Line 4", "Line 5"]
for line in lines:
    # sends 'line' to all 'Task's in a 
    # round robin manner
    s.sprinkle(line)
s.close()

Output:

        Started RemoteDBHandler
        Started LocalDBHandler
        Started STNHandler
        RemoteDBHandler: Line 1
        LocalDBHandler: Line 1
        STNHandler: Line 1
        RemoteDBHandler: Line 2
        LocalDBHandler: Line 2
        STNHandler: Line 2
        RemoteDBHandler: Line 3
        LocalDBHandler: Line 3
        STNHandler: Line 3
        RemoteDBHandler: Line 4
        LocalDBHandler: Line 4
        STNHandler: Line 4
        RemoteDBHandler: Line 5
        LocalDBHandler: Line 5
        STNHandler: Line 5
        Closing RemoteDBHandler
        Closing LocalDBHandler
        Closing STNHandler

About

A small python library that helps you write co-routines in an event-driven way.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages