def build_flow(run_mode, run_id=None): ev = evr.Eventor(run_mode=run_mode, run_id=run_id) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.StepStatus.success: (ev2s, )}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.StepStatus.success: (ev3s, )}) s3 = ev.add_step( 's3', func=prog, kwargs={'progname': 'prog3'}, ) ev.add_assoc(ev1s, s1, delay=0) ev.add_assoc(ev2s, s2, delay=5) ev.add_assoc(ev3s, s3, delay=5) ev.trigger_event(ev1s, 1) return ev
def build_flow(run_mode=evr.RUN_RESTART, run_id=None, param=9): global logger appname = os.path.basename(__file__) logger = logging.getLogger(appname) ev = evr.Eventor(name=appname, run_mode=run_mode, run_id=run_id, config_tag='EVENTOR', config={'EVENTOR': {'shared_db': False, 'LOGGING': {'logging_level': logging.DEBUG}}}) print('Building param: %s' % (param, )) ev1s = ev.add_event('run_step1') ev1d = ev.add_event('done_step1') ev2s = ev.add_event('run_step2') ev2d = ev.add_event('done_step2') ev3s = ev.add_event('run_step3', expr=(ev1d, ev2d)) s1 = ev.add_step('s1', func=square, kwargs={'x': 3}, triggers={evr.STEP_SUCCESS: (ev1d, ev2s, )}, ) s2 = ev.add_step('s2', square_root, args=[param, ], triggers={evr.STEP_SUCCESS: (ev2d, ), }, recovery={evr.STEP_FAILURE: evr.STEP_RERUN, evr.STEP_SUCCESS: evr.STEP_SKIP}) s3 = ev.add_step('s3', divide, kwargs={'x': 9, 'y': 3},) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev1s, 3) # logger = ev.get_logger() return ev
def build_flow(run_mode): ev = evr.Eventor( name=appname, run_mode=run_mode, ) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.STEP_SUCCESS: (ev2s, )}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.STEP_SUCCESS: (ev3s, )}) s3 = ev.add_step( 's3', func=prog, kwargs={'progname': 'prog3'}, ) ev.add_assoc(ev1s, s1, delay=0) ev.add_assoc(ev2s, s2, delay=10) ev.add_assoc(ev3s, s3, delay=10) ev.trigger_event(ev1s, 1) return ev
def construct_and_run(): # db = 'sqfile00' db = 'pgdb2' config = os.path.abspath('runly.conf') # because OSX adds /var -> /private/var if config.startswith('/private'): config = config[8:] # TODO: assume import_module is __file__ if not provided ev = evr.Eventor(name=os.path.basename(__file__), config=config, config_tag='EVENTOR', store=db) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') host = 'ubuntud01_eventor' # host = 'ubuntud01' s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.STEP_SUCCESS: (ev2s,)}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, host=host, triggers={evr.STEP_SUCCESS: (ev3s,)}) s3 = ev.add_step('s3', func=prog, kwargs={'progname': 'prog3'}) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev1s, '1') ev.run()
def build_flow(): ''' db = 'pgdb2' config = os.path.abspath('runly.conf') ev = evr.Eventor(name=os.path.basename(__file__), config_tag='EVENTOR', config=config, store=db, import_module=__file__) ''' ev = evr.Eventor(name=appname, config={'LOGGING': {'logging_level': logging.INFO}},) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') kwargs1 = {'progname': 'prog1'} kwargs2 = {'progname': 'prog1'} kwargs3 = {'progname': 'prog1'} s1 = ev.add_step('s1', func=prog, kwargs=kwargs1, triggers={evr.STEP_SUCCESS: (ev2s,)}) s2 = ev.add_step('s2', func=prog, kwargs=kwargs2, triggers={evr.STEP_SUCCESS: (ev3s,)}) s3 = ev.add_step('s3', func=prog, kwargs=kwargs3,) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev1s, '1') return ev
def build_flow(run_mode): config = os.path.abspath('runly.conf') ev = evr.Eventor(name=appname, config=config, config_tag='EVENTOR') ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.STEP_SUCCESS: (ev2s, )}) s2 = ev.add_step( 's2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.STEP_SUCCESS: (ev3s, )}, ) s3 = ev.add_step( 's3', func=prog, kwargs={'progname': 'prog3'}, ) ev.add_assoc(ev1s, s1, delay=0) ev.add_assoc(ev2s, s2, delay=10) ev.add_assoc(ev3s, s3, delay=10) ev.trigger_event(ev1s, 1) return ev
def construct_and_run(): config = os.path.abspath('runly.conf') ev = evr.Eventor(name=appname, config=config, config_tag='EVENTOR', store='') # store=':memory:') ev1s = ev.add_event('run_step1') ev1d = ev.add_event('done_step1') ev2s = ev.add_event('run_step2') ev2d = ev.add_event('done_step2') ev3s = ev.add_event('run_step3', expr=(ev1d, ev2d)) s1 = ev.add_step('s1', func=prog.step1_create_data, kwargs={'outfile': 'source.txt'}, triggers={evr.StepStatus.complete: (ev1d, ev2s)}) s2 = ev.add_step('s2', prog.step2_multiple_data, kwargs={}, triggers={ evr.StepStatus.complete: (ev2d, ), }) s3 = ev.add_step('s3', prog.step3, kwargs={}) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev1s, 3) ev.run() ev.close()
def program_repr(self): self.evr = eventor.Eventor(*self.args, name=self.name, store=self.store, config=self.config, **self.kwargs) self.root_step.create_flow(self.evr) return self.evr.program_repr()
def run(self, max_loops=-1, **kwargs): # There is no need to pass config_tag=self.config_tag, since it was already stripped off. self.kwargs.update(kwargs) self.evr = evr = eventor.Eventor(name=self.name, store=self.store, config=self.config, **self.kwargs) self.run_id = evr.run_id self.root_step.create_flow(evr) result = evr.run(max_loops=max_loops) evr.close() return result
def construct_and_run(): db = 'pgdb2' config = os.path.abspath('runly.conf') if config.startswith('/private'): config = config[8:] ev = evr.Eventor(name=os.path.basename(__file__), logging_level=logging.DEBUG, config=config, config_tag='EVENTOR', store=db, shared_db=False, import_module=["examples.run_types", ],) ev0first = ev.add_event('s0_start') ev0next = ev.add_event('s0_next') ev00first = ev.add_event('s0_00_start') ev00next = ev.add_event('s0_s00_next') ev1s = ev.add_event('s0_s00_s1_start') ev1success = ev.add_event('s0_s00_s1_success') ev2s = ev.add_event('s0_s00_s2_start', expr=(ev1success,)) ev2success = ev.add_event('s0_s00_s2_success') ev3s = ev.add_event('s0_s00_s3_start', expr=(ev2success,)) # on invoke, Eventor will pass itself as kwargs. metaprog = Container(progname='S0', loop=[1,2,], iter_triggers=(ev00first,)) s0first = ev.add_step('s0_start', func=metaprog, kwargs={'initial': True, }, config={'max_concurrent': -1, 'task_construct': 'invoke', 'pass_logger_to_task': True}) s0next = ev.add_step('s0_next', func=metaprog, config={'task_construct': 'invoke', 'pass_logger_to_task': True}) metaprog = Container(progname='S00', loop=[1,2,], iter_triggers=(ev1s,), end_triggers=(ev0next,)) #s00first=ev.add_step('s0_s00_start', func=metaprog, kwargs={'initial': True}, config={'task_construct': threading.Thread}) #s00next=ev.add_step('s0_s00_next', func=metaprog, config={'task_construct': threading.Thread}) s00first = ev.add_step('s0_s00_start', func=metaprog, kwargs={'initial': True}, config={'max_concurrent': -1, 'task_construct': 'invoke', 'pass_logger_to_task': True}) s00next = ev.add_step('s0_s00_next', func=metaprog, config={'task_construct': 'invoke', 'pass_logger_to_task': True}) s1 = ev.add_step('s0.s00.s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.StepStatus.success: (ev1success,),}, host='ubuntud01_eventor') s2 = ev.add_step('s0.s00.s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.StepStatus.success: (ev2success,), }) s3 = ev.add_step('s0.s00.s3', func=prog, kwargs={'progname': 'prog3'}, triggers={evr.StepStatus.complete: (ev00next,), }) ev.add_assoc(ev0first, s0first) ev.add_assoc(ev0next, s0next) ev.add_assoc(ev00first, s00first) ev.add_assoc(ev00next, s00next) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev0first, '0') #print(ev.program_repr()) ev.run() ev.close()
def build_flow(run_mode): ev = evr.Eventor(name=os.path.basename(__file__), run_mode=run_mode, logging_level=logging.DEBUG,) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.StepStatus.success: (ev2s,)}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.StepStatus.success: (ev3s,)}) s3 = ev.add_step('s3', func=prog, kwargs={'progname': 'prog3'},) ev.add_assoc(ev1s, s1, delay=0) ev.add_assoc(ev2s, s2, delay=10) ev.add_assoc(ev3s, s3, delay=10) ev.trigger_event(ev1s, 1) return ev
def build_flow(run_mode): db = 'pgdb2' config = os.path.abspath('runly.conf') # because OSX adds /var -> /private/var if config.startswith('/private'): config = config[8:] ev = evr.Eventor( name=os.path.basename(__file__), run_mode=run_mode, logging_level=logging.DEBUG, config=config, config_tag='EVENTOR', store=db, ) #import_module=["examples.example_00_prog",]) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.StepStatus.success: (ev2s, )}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.StepStatus.success: (ev3s, )}, host='ubuntud01_eventor') s3 = ev.add_step( 's3', func=prog, kwargs={'progname': 'prog3'}, ) ev.add_assoc(ev1s, s1, delay=0) ev.add_assoc(ev2s, s2, delay=10) ev.add_assoc(ev3s, s3, delay=10) ev.trigger_event(ev1s, 1) return ev
def build_flow(run_mode, run_id=None, success=True): ev = evr.Eventor(name=appname, run_mode=run_mode, run_id=run_id, config={'LOGGING': { 'logging_level': logging.INFO }}) ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') kwprog1 = {'progname': 'prog1'} kwprog2 = {'progname': 'prog2', 'success': success} kwprog3 = {'progname': 'prog3'} s1 = ev.add_step('s1', func=prog, kwargs=kwprog1, triggers={evr.STEP_SUCCESS: (ev2s, )}) s2 = ev.add_step('s2', func=prog, kwargs=kwprog2, triggers={evr.STEP_SUCCESS: (ev3s, )}) s3 = ev.add_step( 's3', func=prog, kwargs=kwprog3, ) ev.add_assoc(ev1s, s1, delay=1) ev.add_assoc(ev2s, s2, delay=1) ev.add_assoc(ev3s, s3, delay=1) ev.trigger_event(ev1s, 1) return ev
item = None if item: self.loop_index += 1 for trigger in self.triggers: ev.remote_trigger_event( trigger, self.loop_index, ) return True ev = evr.Eventor(name=appname, config_tag='EVENTOR', config={ 'EVENTOR': { 'shared_db': True, 'LOGGING': { 'logging_level': logging.DEBUG } } }) ev0first = ev.add_event('run_s0first') ev0next = ev.add_event('run_s0next') ev1s = ev.add_event('run_s1') ev2s = ev.add_event('run_s2') ev3s = ev.add_event('run_s3') metaprog = MetaProg(ev=ev, progname='', loop=[1, 2], triggers=(ev1s, )) s0first = ev.add_step('s0first', func=metaprog, kwargs={'initial': True},
for trigger in self.iter_triggers: logger.info("Container trigger next %s" % (trigger, )) self.ev.trigger_event(trigger, self.loop_index) # self.ev.remote_trigger_event(trigger, self.loop_index,) else: for trigger in self.end_triggers: logger.info("Container trigger end %s" % (trigger, )) self.ev.trigger_event(trigger, self.loop_index) # self.ev.remote_trigger_event(trigger, self.loop_index,) return True config = os.path.abspath('runly.conf') ev = evr.Eventor(name=appname, config=config, config_tag='EVENTOR', store='sqfile00') ev0first = ev.add_event('s0_start') ev0next = ev.add_event('s0_next') ev0end = ev.add_event('s0_end') ev00first = ev.add_event('s0_00_start') ev00next = ev.add_event('s0_s00_next') ev00end = ev.add_event('s0_s00_end') ev1s = ev.add_event('s0_s00_s1_start') ev1success = ev.add_event('s0_s00_s1_success') ev2s = ev.add_event('s0_s00_s2_start', expr=(ev1success, )) ev2success = ev.add_event('s0_s00_s2_success') ev3s = ev.add_event('s0_s00_s3_start', expr=(ev2success, )) ev00endComplete = ev.add_event('s0_s00_end_complete')
import eventor as evr import logging import os from acris import virtual_resource_pool as rp from examples.run_types import Container appname = os.path.basename(__file__) def prog(progname): logger = logging.getLogger(os.getenv("EVENTOR_LOGGER_NAME")) logger.info("doing what %s is doing" % progname) return progname ev = evr.Eventor( name=appname) # config={'sleep_between_loops': 1}) # store=':memory:', ev0first = ev.add_event('s0_start') ev0next = ev.add_event('s0_next') ev0end = ev.add_event('s0_end') ev00first = ev.add_event('s0_00_start') ev00next = ev.add_event('s0_s00_next') ev00end = ev.add_event('s0_s00_end') ev1s = ev.add_event('s0_s00_s1_start') ev1success = ev.add_event('s0_s00_s1_success') ev2s = ev.add_event('s0_s00_s2_start', expr=(ev1success, )) ev2success = ev.add_event('s0_s00_s2_success') ev3s = ev.add_event('s0_s00_s3_start', expr=(ev2success, )) class StepResource(rp.Resource):
############################################################################## import eventor as evr import logging import os from acris import virtual_resource_pool as rp from examples.run_types import prog, Container, StepResource # logger=logging.getLogger(__name__) db = 'pgdb2' config=os.path.abspath('runly.conf') # because OSX adds /var -> /private/var if config.startswith('/private'): config = config[8:] ev = evr.Eventor(name=os.path.basename(__file__), config=config, config_tag='EVENTOR', store=db, ) #config={'sleep_between_loops': 1}) # store=':memory:', ev0first = ev.add_event('s0_start') ev0next = ev.add_event('s0_next') ev0end = ev.add_event('s0_end') ev00first = ev.add_event('s0_00_start') ev00next = ev.add_event('s0_s00_next') ev00end = ev.add_event('s0_s00_end') ev1s = ev.add_event('s0_s00_s1_start') ev1success = ev.add_event('s0_s00_s1_success') ev2s = ev.add_event('s0_s00_s2_start', expr=(ev1success,)) ev2success = ev.add_event('s0_s00_s2_success') ev3s = ev.add_event('s0_s00_s3_start', expr=(ev2success,)) rp1 = rp.ResourcePool('RP1', resource_cls=StepResource, policy={'resource_limit': 2, }).load() rp2 = rp.ResourcePool('RP2', resource_cls=StepResource, policy={'resource_limit': 2, }).load()
appname = os.path.basename(__file__) logger = logging.getLogger(appname) def prog(progname): logger = logging.getLogger(os.getenv("EVENTOR_LOGGER_NAME")) logger.info("doing what %s is doing" % progname) logger.info("EVENTOR_STEP_SEQUENCE: %s" % os.getenv("EVENTOR_STEP_SEQUENCE")) time.sleep(5) return progname config = os.path.abspath('runly.conf') ev = evr.Eventor(name=appname, config=config, config_tag='EVENTOR') ev1s = ev.add_event('run_step1') ev2s = ev.add_event('run_step2') ev3s = ev.add_event('run_step3') s1 = ev.add_step('s1', func=prog, kwargs={'progname': 'prog1'}, triggers={evr.STEP_SUCCESS: (ev2s, )}) s2 = ev.add_step('s2', func=prog, kwargs={'progname': 'prog2'}, triggers={evr.STEP_SUCCESS: (ev3s, )}) s3 = ev.add_step( 's3',
############################################################################## import os import sys import eventor as evr import logging from examples.program import step1_create_data, step2_multiple_data, step3 appname = os.path.basename(__file__) ev = evr.Eventor( name=appname, run_mode=evr.RUN_RECOVER, config_tag='EVENTOR', config={ 'EVENTOR': { 'shared_db': False, # will be override to True by Eventor. 'LOGGING': { 'logging_level': logging.INFO } } }) ev1s = ev.add_event('run_step1') ev1d = ev.add_event('done_step1') ev2s = ev.add_event('run_step2') ev2d = ev.add_event('done_step2') ev3s = ev.add_event('run_step3', expr=(ev1d, ev2d)) s1 = ev.add_step('s1', func=step1_create_data, kwargs={'outfile': 'source.txt'},
def construct_and_run(): db = 'sqfile00' # db = 'pgdb2' config = os.path.abspath('runly.conf') ev = evr.Eventor(name=appname, config=config, config_tag='EVENTOR', store=db) ev0first = ev.add_event('s0_start') ev0next = ev.add_event('s0_next') ev00first = ev.add_event('s0_00_start') ev00next = ev.add_event('s0_s00_next') ev1s = ev.add_event('s0_s00_s1_start') ev1success = ev.add_event('s0_s00_s1_success') ev2s = ev.add_event('s0_s00_s2_start', expr=(ev1success, )) ev2success = ev.add_event('s0_s00_s2_success') ev3s = ev.add_event('s0_s00_s3_start', expr=(ev2success, )) metaprog = Container(progname='S0', loop=[1, 2], iter_triggers=(ev00first, )) s0first = ev.add_step('s0_start', func=metaprog, kwargs={'initial': True}, config={ 'max_concurrent': -1, 'task_construct': 'invoke', 'pass_logger_to_task': True }) s0next = ev.add_step('s0_next', func=metaprog, config={ 'task_construct': 'invoke', 'pass_logger_to_task': True }) metaprog = Container(progname='S00', loop=[1, 2], iter_triggers=(ev1s, ), end_triggers=(ev0next, )) s00first = ev.add_step('s0_s00_start', func=metaprog, kwargs={'initial': True}, config={ 'max_concurrent': -1, 'task_construct': 'invoke', 'pass_logger_to_task': True }) s00next = ev.add_step('s0_s00_next', func=metaprog, config={ 'task_construct': 'invoke', 'pass_logger_to_task': True }) s1 = ev.add_step('s0.s00.s1', func=prog, kwargs={'progname': 'prog1'}, triggers={ evr.STEP_SUCCESS: (ev1success, ), }) s2 = ev.add_step('s0.s00.s2', func=prog, kwargs={'progname': 'prog2'}, triggers={ evr.STEP_SUCCESS: (ev2success, ), }) s3 = ev.add_step('s0.s00.s3', func=prog, kwargs={'progname': 'prog3'}, triggers={ evr.STEP_COMPLETE: (ev00next, ), }) ev.add_assoc(ev0first, s0first) ev.add_assoc(ev0next, s0next) ev.add_assoc(ev00first, s00first) ev.add_assoc(ev00next, s00next) ev.add_assoc(ev1s, s1) ev.add_assoc(ev2s, s2) ev.add_assoc(ev3s, s3) ev.trigger_event(ev0first, '0') # print(ev.program_repr()) ev.run()