예제 #1
0
 def run(self):
     while not self.stop_event.wait(self.interval):
         try:
             if self.stop_event.is_set():
                 break
             self.func(*self.args, **self.kwargs)
         except Exception, e:
             ec_logger.exception(traceback.format_exc())
             if break_on_err:
                 break
예제 #2
0
    def __init__(self, endpoint, timeout=None):
        self.version = -1
        self.servers = []
        try:
            host, port = endpoint.split(':')
            telnet = Telnet(host, port, timeout)

            telnet.write('version\n')
            ret = telnet.read_until('\r\n', timeout)
            ec_logger.debug('version: %s', ret)
            version_info = ret.split(' ')
            if len(version_info) != 2 or version_info[0] != 'VERSION':
                raise ElasticacheInvalidTelentReplyError(ret)
            version = version_info[1][0:-2]
            if StrictVersion(version) >= StrictVersion('1.4.14'):
                cmd = 'config get cluster\n'
            else:
                cmd = 'get AmazonElastiCache:cluster\n'

            telnet.write(cmd)
            ret = telnet.read_until('END\r\n', timeout)
            telnet.close()
            ec_logger.debug('config: %s', ret)
            splitter = re.compile(r'\r?\n')
            cluster = splitter.split(ret)
            if len(cluster) != 6 or cluster[4][0:3] != 'END':
                raise ElasticacheInvalidTelentReplyError(ret)

            self.version = cluster[1]
            nodes = cluster[2].split(' ')
            for node in nodes:
                info = node.split('|')
                if len(info) != 3:
                    raise ElasticacheInvalidTelentReplyError(ret)
                self.servers.append(info[1] + ':' + info[2])
        except:
            self.servers.append(endpoint)
            ec_logger.exception(traceback.format_exc())
예제 #3
0
 def detect_cluster(self):
     try:
         cluster = Cluster(self.endpoint, self.autodiscovery_timeout)
     except Exception, e:
         ec_logger.exception(traceback.format_exc())
         return