sentinel.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:pysoa 作者: eventbrite 项目源码 文件源码
def _get_connection(self, index=None):
        if index is None:
            index = self._get_random_index()

        if not 0 <= index < self._ring_size:
            raise ValueError(
                'There are only {count} hosts, but you asked for connection {index}.'.format(
                    count=self._ring_size,
                    index=index,
                )
            )

        for i in range(self._sentinel_failover_retries + 1):
            try:
                return self._get_master_client_for(self._services[index])
            except redis.sentinel.MasterNotFoundError:
                self.reset_clients()  # make sure we reach out to get master info again on next call
                if i == self._sentinel_failover_retries:
                    raise CannotGetConnectionError('Master not found; gave up reloading master info after failover.')
                self._get_counter('backend.sentinel.master_not_found_retry').increment()
                time.sleep((2 ** i + random.random()) / 4.0)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号