예제 #1
0
 def __init__(self, domain, region):
     self.domain = domain
     self.region = region
     self.client = boto3.client('swf',
                                region_name=self.region,
                                config=Config(
                                    connect_timeout=config.CONNECT_TIMEOUT,
                                    read_timeout=config.READ_TIMEOUT))
     self.log_handler = LogHandler()
예제 #2
0
파일: decider.py 프로젝트: badboy99tw/mass
class Decider(object):

    def __init__(self, domain, region):
        self.domain = domain
        self.region = region
        self.client = boto3.client(
            'swf',
            region_name=self.region,
            config=Config(connect_timeout=config.CONNECT_TIMEOUT,
                          read_timeout=config.READ_TIMEOUT))
        self.log_handler = LogHandler()

    def poll(self, task_list):
        """Poll workflow execution history from SWF.
        """
        self.decisions = Decisions()
        paginator = self.client.get_paginator('poll_for_decision_task')
        events = []
        for res in paginator.paginate(
                domain=self.domain,
                taskList={
                    'name': task_list
                },
                identity=socket.gethostname()):
            if 'events' not in res:
                break
            events += res['events']
            self.task_token = res['taskToken']
        return events

    def suspend(self):
        self.client.respond_decision_task_completed(
            taskToken=self.task_token,
            decisions=self.decisions._data)

    def complete(self, result):
        """Report workflow execution completed.
        """
        self.decisions.complete_workflow_execution(result=result)
        self.client.respond_decision_task_completed(
            taskToken=self.task_token,
            decisions=self.decisions._data)

    def fail(self, reason, details):
        """Report workflow execution failed.
        """
        self.decisions.fail_workflow_execution(reason, details)
        self.client.respond_decision_task_completed(
            taskToken=self.task_token,
            decisions=self.decisions._data)
        self.log_handler.log('error', 'Reason: %s\nDetails: %s' % (reason, details))
예제 #3
0
class Decider(object):
    def __init__(self, domain, region):
        self.domain = domain
        self.region = region
        self.client = boto3.client('swf',
                                   region_name=self.region,
                                   config=Config(
                                       connect_timeout=config.CONNECT_TIMEOUT,
                                       read_timeout=config.READ_TIMEOUT))
        self.log_handler = LogHandler()

    def poll(self, task_list):
        """Poll workflow execution history from SWF.
        """
        self.decisions = Decisions()
        paginator = self.client.get_paginator('poll_for_decision_task')
        events = []
        for res in paginator.paginate(domain=self.domain,
                                      taskList={'name': task_list},
                                      identity=socket.gethostname()):
            if 'events' not in res:
                break
            events += res['events']
            self.task_token = res['taskToken']
        return events

    def suspend(self):
        self.client.respond_decision_task_completed(
            taskToken=self.task_token, decisions=self.decisions._data)

    def complete(self, result):
        """Report workflow execution completed.
        """
        self.decisions.complete_workflow_execution(result=result)
        self.client.respond_decision_task_completed(
            taskToken=self.task_token, decisions=self.decisions._data)

    def fail(self, reason, details):
        """Report workflow execution failed.
        """
        self.decisions.fail_workflow_execution(reason, details)
        self.client.respond_decision_task_completed(
            taskToken=self.task_token, decisions=self.decisions._data)
        self.log_handler.log('error',
                             'Reason: %s\nDetails: %s' % (reason, details))
예제 #4
0
파일: decider.py 프로젝트: badboy99tw/mass
 def __init__(self, domain, region):
     self.domain = domain
     self.region = region
     self.client = boto3.client(
         'swf',
         region_name=self.region,
         config=Config(connect_timeout=config.CONNECT_TIMEOUT,
                       read_timeout=config.READ_TIMEOUT))
     self.log_handler = LogHandler()