本文整理汇总了Python中kazoo.retry.KazooRetry.retry_exceptions方法的典型用法代码示例。如果您正苦于以下问题:Python KazooRetry.retry_exceptions方法的具体用法?Python KazooRetry.retry_exceptions怎么用?Python KazooRetry.retry_exceptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kazoo.retry.KazooRetry
的用法示例。
在下文中一共展示了KazooRetry.retry_exceptions方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: rebalance
# 需要导入模块: from kazoo.retry import KazooRetry [as 别名]
# 或者: from kazoo.retry.KazooRetry import retry_exceptions [as 别名]
def rebalance(self, partition_ids=None):
if partition_ids is None:
partition_ids = [
str(p_id)
for p_id in self.consumer_partitions[self._identifier]
]
kr = KazooRetry(max_tries=3)
kr.retry_exceptions = kr.retry_exceptions + tuple([NodeExistsError])
my_partitions = self.consumer_partitions[self._identifier]
self.logger.info('My partitions (%d): %s', len(my_partitions), my_partitions)
# Clean up old ownership data first, so we don't block
# the joining node(s)
self._release_locks()
nodes = sorted([node for node in self._group], key=lambda x: hash(x))
my_new_partitions = [
partition
for partition in partition_ids
if nodes[int(partition) % len(nodes)] == self._identifier and
int(partition) not in my_partitions
]
self.logger.info('My new partitions (%d): %s', len(my_new_partitions), my_new_partitions)
for partition in my_new_partitions:
c_id = nodes[int(partition) % len(nodes)]
self.consumer_partitions[c_id].append(int(partition))
p_path = self.path_formats['owner'].format(group=self.group,
topic=self.topic,
partition=partition)
try:
self.logger.debug('Acquiring ownership of partition %s',
partition)
kr(self._client.create, p_path,
value=self._identifier, ephemeral=True, makepath=True)
except RetryFailedError as err:
# A different consumer had been registered as the owner
expired_cid, zstat = self._client.get(p_path)
msg = 'Acquiring ownership of partition %s (was owned by %s)'
self.logger.warn(msg, partition, expired_cid)
# We need to delete / create, so that the node is created
# ephemeral and owned by us
self._client.delete(p_path)
self._client.create(p_path, value=self._identifier,
ephemeral=True, makepath=True)
if self.partitions_changed_cb:
self.partitions_changed_cb(self.consumer_partitions[self._identifier])
示例2: rebalance
# 需要导入模块: from kazoo.retry import KazooRetry [as 别名]
# 或者: from kazoo.retry.KazooRetry import retry_exceptions [as 别名]
def rebalance(self, partition_ids=None):
if partition_ids is None:
partition_ids = [
str(p_id)
for p_id in self.consumer_partitions[self._identifier]
]
kr = KazooRetry(max_tries=3)
kr.retry_exceptions = kr.retry_exceptions + tuple([NodeExistsError])
my_partitions = self.consumer_partitions[self._identifier]
self.logger.info('My partitions (%d): %s',
len(my_partitions), my_partitions)
# Clean up old ownership data first, so we don't block
# the joining node(s)
self._release_locks()
nodes = sorted([node for node in self._group])
self.logger.info('Connected nodes (%d): %s',
len(nodes), nodes)
my_new_partitions = [
partition
for partition in partition_ids
if nodes[int(partition) % len(nodes)] == self._identifier and
int(partition) not in my_partitions
]
self.logger.info('My new partitions (%d): %s',
len(my_new_partitions), my_new_partitions)
for partition in my_new_partitions:
c_id = nodes[int(partition) % len(nodes)]
self.consumer_partitions[c_id].append(int(partition))
p_path = self.path_formats['owner'].format(group=self.group,
topic=self.topic,
partition=partition)
try:
self.logger.debug('Acquiring ownership of partition %s',
partition)
kr(self._client.create, p_path,
value=self._identifier, ephemeral=True, makepath=True)
except RetryFailedError:
# A different consumer is still connected and owns this,
# try to gracefully release everything else and fail out
self.finish()
if self.partitions_changed_cb:
self.partitions_changed_cb(self.consumer_partitions[self._identifier])