1

次のスクリプトを実行すると、設定時に例外がスローされます。

buffertest.py

import pylibmc
mc = pylibmc.Client(['localhost:11211'], behaviors={'buffer_requests': True})
mc.set('key1', 'value1')
print 'Reaching here'
print mc.get('key1')

出力:

root@shady:~# python buffertest.py 
Traceback (most recent call last):
  File "buffertest.py", line 3, in <module>
    mc.set('key1', 'value1')
_pylibmc.MemcachedError: error 32 from memcached_set: SUCCESS

その例外をキャッチすると、get はエラーをスローします。

import pylibmc
mc = pylibmc.Client(['localhost:11211'], behaviors={'buffer_requests': True})
try:   
        mc.set('key1', 'value1')
except:
        pass
print 'Reaching here'
print mc.get('key1')

出力:

root@shady:~# python buffertest.py
Reaching here
Traceback (most recent call last):
  File "buffertest.py", line 8, in <module>
    print mc.get('key1')
_pylibmc.MemcachedError: error 47 from memcached_get(key1): SERVER HAS FAILED AND IS    DISABLED UNTIL TIMED RETRY                                                                                                                                                                                     

この動作を間違った方法で使用していますか? この動作についての私の理解は、セットはクライアント側でバッファリングされ、最初の get が到着したときにサーバーにフラッシュされるということです。サーバーエラーが発生するのはなぜですか?

4

1 に答える 1

0

バイナリ オプションを False に設定してみてください。

mc = pylibmc.Client(['localhost:11211'], binary=False, behaviors={'buffer_requests': True})
于 2013-03-10T17:31:17.187 に答える