Я создал специальную политику retryPolicy для реализации отсрочки для моего кластера Keyspaces.
Это работает для таймаутов чтения, у меня есть журналы с повтором on_read_timeout. Но он не повторяет попытку ReadFailure, и, насколько я понимаю, он должен сделать это благодаря методу on_request_error. Но это не так, и он немедленно завершается со следующей ошибкой: Ошибка с сервера: code=1300 [Не удалось выполнить реплику(ы) read] message=\\"Операция не удалась - получено 0 ответов и 1 сбой\\" info={ \'согласованность\': \'LOCAL_QUORUM\', \'required_responses\': 2, \'received_responses\': 0, \'ошибки\': 1
cassandra-driver==3.25.0
cassandra-sigv4==4.0.2
Вот моя политика повторных попыток:
from cassandra.policies import RetryPolicy
class KeyspacesRetryPolicy(RetryPolicy):
def __init__(self, RETRY_MAX_ATTEMPTS=5, base_delay=0.5, max_delay=10):
# retry_num starts at 0
self.max_retry_num = RETRY_MAX_ATTEMPTS-1
self.base_delay = base_delay
self.max_delay = max_delay
def __backoff(self, retry_num):
# exponential backoff delay
delay = min(self.base_delay * (2 ** (retry_num + 1)), self.max_delay)
print(f"Backing off for {delay} seconds (retry number {retry_num})")
time.sleep(delay)
def on_read_timeout(self, query, consistency, required_responses, received_responses, data_retrieved, retry_num):
if retry_num
Подробнее здесь: https://stackoverflow.com/questions/792 ... eadfailure
Пользовательская политика retryPolicy драйвера Cassandra Python не перехватывает ReadFailure ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение