Я вижу странное, но последовательное поведение клиента Python Riak при подключении к моему riak AWS-кластеру с использованием буферов протокола. Этот короткий питон сниппет производит ошибку:Проблемы с тайм-аутом с Riak Python Client с буферами протоколов
import time
import riak
client = riak.RiakClient(
host='address_to_my_cluster_goes_here',
http_port=8098,
pb_port=8087,
protocol='pbc'
)
result = client.ping()
# Do something else for a while, > 60 seconds
time.sleep(61)
result = client.ping()
Последний пинг всегда вызывает исключение со следующим TRACEBACK:
Traceback (most recent call last):
File "main_causing_exception.py", line 16, in <module>
result = client.ping()
File "C:\temp\venv\lib\site-packages\riak\client\transport.py", line 127, in wrapper
return self._with_retries(pool, thunk)
File "C:\temp\venv\lib\site-packages\riak\client\transport.py", line 69, in _with_retries
return fn(transport)
File "C:\temp\venv\lib\site-packages\riak\client\transport.py", line 125, in thunk
return fn(self, transport, *args, **kwargs)
File "C:\temp\venv\lib\site-packages\riak\client\operations.py", line 92, in ping
return transport.ping()
File "C:\temp\venv\lib\site-packages\riak\transports\pbc\transport.py", line 95, in ping
msg_code, msg = self._request(MSG_CODE_PING_REQ)
File "C:\temp\venv\lib\site-packages\riak\transports\pbc\connection.py", line 43, in _request
return self._recv_msg(expect)
File "C:\temp\venv\lib\site-packages\riak\transports\pbc\connection.py", line 50, in _recv_msg
self._recv_pkt()
File "C:\temp\venv\lib\site-packages\riak\transports\pbc\connection.py", line 71, in _recv_pkt
% len(nmsglen))
riak.RiakError: 'Socket returned short packet length 0 - expected 4'
Если я делаю client.ping()
каждые 30 секунд или около того, ошибка Безразлично» Случается, что это какая-то проблема сохранения сокета, которую я вижу, но это не похоже на решение, достаточно прочное для производственной среды.
Ошибка возникает только при использовании параметра протокола pbc
, и я никогда не видел его при использовании настроенного клиента Riak Python с настройкой http
.
Я использую Python 2.7.5 на Win7-64 платформе (хотя ошибка возникает также на нашем сервере разработки Ubuntu) в виртуальной среде со следующими пакетами и версиях:
- Protobuf (2.4 0,1)
- Riak (2.0.1)
- Riak-рь (1.4.1.1)
Любые мысли о том, что происходит и как решить ее? Я использую Python Riak Client неправильно?
Я вижу то же самое на Ubuntu 12.04 с Riak 2.0.2, Riak-пб 1.4.1.1 и Protobuf 2.4. 1. Я не думаю, что вы используете клиента неправильно. Я также не нашел надежного решения для этого, к сожалению (кроме использования pbc ...). – rkrzr
Здравствуйте, не могли бы вы представить это как проблему на GitHub? https://github.com/basho/riak-python-client/issues/new –