예제 #1
0
파일: step.py 프로젝트: badboy99tw/mass
    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())
예제 #2
0
파일: __init__.py 프로젝트: drakeguan/mass
    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))
예제 #3
0
파일: __init__.py 프로젝트: badboy99tw/mass
    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])
예제 #4
0
    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])
예제 #5
0
    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())