2013-11-02 52 views
4

當使用協議緩衝區連接到我的AWS AWS羣集時,我看到Python Riak Client出現奇怪但一致的行爲。這簡短的Python代碼段產生錯誤:帶協議緩衝區的Riak Python客戶端的超時問題

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 (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協議設置時纔會出現該錯誤,並且在使用http配置的Riak Python客戶端時我從來沒有看到過。

我使用一個Win7-64平臺的Python 2.7.5與以下軟件包和版本的虛擬環境(雖然該錯誤也出現了Ubuntu開發服務器上):

  • protobuf的(2.4 1.1)
  • 了Riak(2.0.1)
  • 了Riak-PB(1.4.1.1)

上發生的事情,以及如何解決它有什麼想法?我是否以錯誤的方式使用Python Riak客戶端?

+0

我看到在Ubuntu 12.04的同樣的事情了Riak 2.0.2,了Riak-PB 1.4.1.1和protobuf的2.4。 1。我不認爲你以錯誤的方式使用客戶端。我還沒有想出一個可靠的解決方案,不幸的是(除非不使用pbc ...)。 – rkrzr

+0

你好 - 請你把這個文件作爲GitHub上的問題? https://github.com/basho/riak-python-client/issues/new –

回答