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)
评论列表
文章目录