Проблема хранения Python в memcached set_multi - PullRequest
3 голосов
/ 02 ноября 2011

Я обнаружил проблему при попытке сохранить много ключей с помощью python-memcached. Вот что я делаю:

import memcache

# This dict has a 2270 entries that is generated on production server
v = eval(open("/home/dragoon/output").read())
a = memcache.Client(['unix:/tmp/memcached.sock'], debug=1)

Далее я пытаюсь установить все эти значения:

In [94]: len(a.set_multi(v))                                       
MemCached: MemCache: unix:/tmp/memcached.sock: timed out.  Marking dead.
Out[94]: 2270

Вывод журнала сервера memcached:

...
27: going from conn_new_cmd to conn_parse_cmd
<27 set d750bde63a98579f9c2987907aaaf5f8 1 0 18
27: going from conn_parse_cmd to conn_nread
> FOUND KEY d750bde63a98579f9c2987907aaaf5f8
>27 STORED
27: going from conn_nread to conn_write
Failed to write, and not due to blocking: Broken pipe
27: going from conn_write to conn_closing
<27 connection closed.

Через некоторое время:

In [96]: len(a.set_multi({'test':1}))
Out[96]: 0

In [97]: a.get('test')
Out[97]: 1

Время ожидания по умолчанию составляет 3 секунды, но увеличение его даже до 100 секунд не помогает, memcached просто застревает. Итак, мой вопрос: в чем проблема с memcache?

Я видел, как люди говорили о хранении более 1000 000 записей в нем, но для меня это даже не может хранить 2000?

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Попробуйте использовать pylibmc в качестве драйвера memcache, а не python-memcache

Я видел эту проблему и в Memcache 1.4.7 в Ubuntu 11.

0 голосов
/ 03 ноября 2011

Хорошо.Похоже, в memcached 1.4.2 есть какая-то ошибка, которая является последней версией Ubuntu 10.04 LTS.Memcached 1.4.5 работает отлично.

...