2013-01-19 53 views
1

當我發射的Redis-PY的bgsave()命令,返回值是False,但我敢肯定的執行是成功的,因爲我已經lastsave()檢查。爲什麼redis-py的bgsave()命令在成功執行後返回False?

但是,如果我用save()的返回值將成功執行後True

任何人都可以請解釋一下False指示bgsave()?不知道它是否與bgsave()在後臺執行有關。

+0

False表示redis-py收到「背景保存已啓動」以外的內容作爲響應。嘗試使用redis-cli發佈BGSAVE,並查看redis的響應是什麼。 –

+0

@PavelAnossov在redis-cli中運行'BGSAVE'會正確地啓動「後臺保存」。 – zuhao

+0

然後編輯'redis/client.py',在'parse_response'方法(第372行)的'response = connection.read_response()'後面加上'print response'。當你在那裏時,看看RESPONSE_CALLBACKS字典(第221行)。看看它是否確實希望「背景保存開始」響應bgsave。如果沒有,那麼你的redis和redis-py版本是不匹配的。 –

回答

2

由於保爾Anossov,讀client.py的代碼後,我發現,從2個命令(BGSAVE和BGREWRITEAOF)應答沒有從字節轉換爲str,這導致的問題在Python 3.

要解決此問題,請將lambda r: r ==更改爲lambda r: nativestr(r) ==,以獲取RESPONSE_CALLBACKS中的這兩個命令。

相關問題