get() set() memcached прослушивает UDP с использованием Python

Вопрос: как getset, memcached слушая UDP только с использованием Python (любые привязки Python производственного уровня)


Что я сделал / попробовал до сих пор:

Заставить memcached прослушивать только UDP - я указал OPTIONS в memcached config:

OPTIONS="-p 0 -U 11211" # -U for UDP port and -p for TCP port

Проверка:

# netstat -nlp|grep memcached
udp        0      0 0.0.0.0:11211           0.0.0.0:*                           12095/memcached     
udp6       0      0 :::11211                :::*                                12095/memcached 

Проблема в том, что я не смог проверить, т.е. выполнить get а также set или, проще говоря, я не получил его на работу.

Я изучил привязки к memcache в Python - две широко используемые (надежные, для использования в производстве) python-memcached а также pylibmc, За python-memcached Я не нашел никакого явного упоминания для указания только UPD или какой-либо проверки, прослушивает ли memcached по TCP или UDP. За pylibmcЯ нашел упоминание:

Чтобы указать UDP, к адресу сервера должен быть добавлен префикс "udp:", как в "udp:127.0.0.1".

Проверять pylibmc:

>>> import pylibmc
>>> mc_tcp = pylibmc.Client(["127.0.0.1"], binary=True, behaviors={"tcp_nodelay": True, "ketama": True})
>>> mc_udp = pylibmc.Client(["udp:127.0.0.1"], binary=True, behaviors=None)
>>>
>>> mc_tcp.set('udp_key', 12)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_pylibmc.ConnectionError: error 3 from memcached_set: CONNECTION FAILURE
>>>
>>> mc_udp.set('udp_key', 12)
True
>>>
>>> mc_udp.get('udp_key')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_pylibmc.NotSupportedError: error 28 from memcached_get(udp_key): ACTION NOT SUPPORTED

Проверять python-memcached:

>>> import memcache
>>> mc = memcache.Client([('127.0.0.1', 11211)])
>>> mc.set('key', 12)
0
>>> mc.get('key')
>>> 

Похожий вопрос - memcached листинг по UDP с Django

0 ответов

Другие вопросы по тегам