def __init__(self, events, activity_max_retry=0, workflow_max_retry=0): self.events = [] self.activity_max_retry = activity_max_retry self.workflow_max_retry = workflow_max_retry self.activity_newbe_count = 0 self.workflow_newbe_count = 0 def get_start_event(events): events = map(Event, events) events = [e for e in events if not e.event_type.startswith('Decision')] return events[0] start_event = get_start_event(events) self.input = json.loads(start_event.input) self.tag_list = start_event.tag_list self.priority = int(start_event.task_priority) input_ = json.loads(start_event.input) self.protocol = input_['protocol'] handler = InputHandler(self.protocol) self.input = handler.load(input_['body']) swf_event_groups = self.classify_events( events, self.activity_max_retry, self.workflow_max_retry) def to_event(swf_events): if 'ActivityTask' in swf_events[0].event_type: return ActivityTask(swf_events, self.activity_max_retry) elif 'ChildWorkflowExecution' in swf_events[0].event_type: return ChildWorkflowExecution(swf_events, self.workflow_max_retry) self.events = [ to_event(swf_events) for swf_events in swf_event_groups.values()] self.events = sorted(self.events, key=lambda a: a.created_time())
def run(self, task_list): """Poll activity task from SWF and process. """ task = self.poll(task_list) if not task: return activity_input = json.loads(task['input']) handler = InputHandler(activity_input['protocol']) action = handler.load(activity_input['body']) try: result = self.execute(action) except TaskError as err: self.client.respond_activity_task_failed( taskToken=task['taskToken'], details=err.details, reason=err.reason) except: _, error, _ = sys.exc_info() self.client.respond_activity_task_failed( taskToken=task['taskToken'], details=json.dumps(traceback.format_exc()), reason=repr(error)) else: self.client.respond_activity_task_completed( taskToken=task['taskToken'], result=json.dumps(result))
def run(self, task_list): """Poll activity task from SWF and process. """ task = self.poll(task_list) if not task: return activity_input = json.loads(task['input']) handler = InputHandler(activity_input['protocol']) action = handler.load(activity_input['body']) result = self.execute_action(action) if result['status'] == 'completed': self.client.respond_activity_task_completed( taskToken=self.task_token, result=json.dumps(result['result'])[:config.MAX_RESULT_SIZE]) else: self.client.respond_activity_task_failed( taskToken=self.task_token, details=result['details'][:config.MAX_DETAIL_SIZE], reason=result['reason'][:config.MAX_REASON_SIZE])
def run(self, task_list): """Poll activity task from SWF and process. """ task = self.poll(task_list) if not task: return activity_input = json.loads(task['input']) handler = InputHandler(activity_input['protocol']) action = handler.load(activity_input['body']) result = self.execute_action(action) if result['status'] == 'completed': self.client.respond_activity_task_completed( taskToken=self.task_token, result=json.dumps(result['result'])[:config.MAX_RESULT_SIZE]) else: self.client.respond_activity_task_failed( taskToken=self.task_token, details=result['details'][:config.MAX_DETAIL_SIZE], reason=result['reason'][:config.MAX_REASON_SIZE])
def __init__(self, events, activity_max_retry=0, workflow_max_retry=0): self.events = [] self.activity_max_retry = activity_max_retry self.workflow_max_retry = workflow_max_retry self.activity_newbe_count = 0 self.workflow_newbe_count = 0 def get_start_event(events): events = map(Event, events) events = [ e for e in events if not e.event_type.startswith('Decision') ] return events[0] start_event = get_start_event(events) self.input = json.loads(start_event.input) self.tag_list = start_event.tag_list self.priority = int(start_event.task_priority) input_ = json.loads(start_event.input) self.protocol = input_['protocol'] handler = InputHandler(self.protocol) self.input = handler.load(input_['body']) swf_event_groups = self.classify_events(events, self.activity_max_retry, self.workflow_max_retry) def to_event(swf_events): if 'ActivityTask' in swf_events[0].event_type: return ActivityTask(swf_events, self.activity_max_retry) elif 'ChildWorkflowExecution' in swf_events[0].event_type: return ChildWorkflowExecution(swf_events, self.workflow_max_retry) self.events = [ to_event(swf_events) for swf_events in swf_event_groups.values() ] self.events = sorted(self.events, key=lambda a: a.created_time())