class Workflow(object): actors = [] def __init__(self, actors): self.actors_mng = ActorsManager(connection = \ my_app.broker_connection(), app = my_app) self.actors = actors def start(self): for actor in self.actors: yield self.actors_mng.add_actor(actor)
def __init__(self, actors): self.actors_mng = ActorsManager(connection = \ my_app.broker_connection(), app = my_app) self.actors = actors
logger, collector = Logger(), Joiner() print 'collector_id before start:' + collector.id wf = Workflow([filter1, filter2, printer, logger, collector]) [filter1, filter2, printer, logger, collector] = list(wf.start()) print 'collector_id after start:' + collector.id time.sleep(2) [filter1, filter2] |join| collector collector |multiplex| [printer, logger] filter1.call('filter', {'msg':'Ihu'}) filter2.call('filter', {'msg' :'Ahu'}) printer_name = 'examples.workflow.Printer' actors_mng = ActorsManager(connection = my_app.broker_connection(), app = my_app) if __name__ == '__main__': #FilterExample().start() printer = Printer() actors_mng.add_actor(printer) """ Example usage: >>from examples.workflow import Printer, Logger, actors_mng >>pr = Printer() Start 2 actors of type Printer remotely >>rpr1 = actors_mng.add_actor(pr) >>rpr2 = actors_mng.add_actor(pr) Use remote actor >>rpr.call('do_smth')