Драйвер Python Cassandra Readtimeout - PullRequest
0 голосов
/ 31 мая 2018

Каждый раз, когда я пытаюсь получить запрос с помощью драйвера Python Cassandra, я получаю такое исключение:

**File "something.py", line 32, in <module>
    rows = session.execute('some query execution', timeout=None)
  File "C:\Anaconda2\lib\site-packages\cassandra\cluster.py", line 2141, in execute
    return self.execute_async(query, parameters, trace, custom_payload, timeout, execution_profile, paging_state).result()
  File "C:\Anaconda2\lib\site-packages\cassandra\cluster.py", line 4033, in result
    raise self._final_exception
cassandra.ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'LOCAL_ONE'}**

Чтобы избежать этого исключения, я уже пытался установить тайм-аут по умолчанию ни один, как:

cluster.default_timeout = None
session.default_timeout = None
session.execute('some query execution', timeout=None)

Однако они никогда не изменяют период Readtimeout.

Следует отметить, что эта команда запроса не занимает слишком много времени, когда я выполняю ее в Squrrielоколо 1.5 секунд.

Кто-нибудь знает, как решить эту проблему?Спасибо!

1 Ответ

0 голосов
/ 01 июня 2018

Ключевое сообщение здесь - Coordinator node timed out waiting for replica nodes' responses - это означает, что тайм-аут происходит внутри самой Кассандры.В вашем случае запрос идет не непосредственно к узлу, которому принадлежат данные, а к одному из узлов, который действует как Coordinator, и этот узел затем повторно отправляет запрос узлу, который владеет данными, и не 'Я не могу получить ответ от него в течение выделенного времени.

Я точно не помню, но драйвер Python должен использовать так называемую политику балансировки нагрузки TokenAware, которая заставит драйвер отправлять запросы напрямую узлам, которые владеют данными.- вам нужно проверить, что вы используете эту политику.

Кроме того, вам нужно проверить журналы на узлах Cassandra, чтобы выяснить, почему они истекли, и при необходимости настроить тайм-ауты на этих узлах.

...