2013-11-02 1 views
4

Я вижу странное, но последовательное поведение клиента 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 неправильно?

+0

Я вижу то же самое на Ubuntu 12.04 с Riak 2.0.2, Riak-пб 1.4.1.1 и Protobuf 2.4. 1. Я не думаю, что вы используете клиента неправильно. Я также не нашел надежного решения для этого, к сожалению (кроме использования pbc ...). – rkrzr

+0

Здравствуйте, не могли бы вы представить это как проблему на GitHub? https://github.com/basho/riak-python-client/issues/new –

ответ

Смежные вопросы