Кэширование памяти Python, подключение к серверу виртуальной машины Azure

#memcached #azure-virtual-machine #python-memcached

#кэширование памяти #azure-виртуальная машина #python-memcached

Вопрос:

Я установил Memcached на сервере виртуальной машины Azure (Ubuntu). Теперь мне нужно подключиться к этому из моей программы на Python, которая выполняется в другом месте.

Когда они были установлены на одном сервере, это сработало:

 import memcache
MEMCACHE_SOCKET_PATH = 'unix:<path_to>/memcached.sock'  
memcache_client = memcache.Client([MEMCACHE_SOCKET_PATH], debug=0)
  

Теперь я не уверен, что использовать для MEMCACHE_SOCKET_PATH. Виртуальная машина, на которой запущен Memcached, имеет статический IP-адрес, и я создал конечную точку (открыл порт) для 11211. memcached.sock находится в домашнем каталоге.

Вот как я запускаю Memcached на виртуальной машине:

 memcached -d -m 500 -s $HOME/memcached.sock -P $HOME/memcached.pid
  

Ответ №1:

Согласно вашему описанию команды для запуска memcached на виртуальной машине Azure, я вижу, что ваш memcached был запущен с доменным сокетом Unix, а не TCP / IP. Доменный сокет Unix — это решение передачи данных IPC (межпроцессное взаимодействие) для обмена данными между процессами, выполняющимися в одной операционной системе хоста, его нельзя использовать в сценарии RPC (удаленный вызов процедуры).

Итак, чтобы это исправить, вам просто нужно запустить memcached с помощью memcached.conf и заставить его работать по протоколу TCP / IP. Если вы использовали команду sudo apt-get install memcached для установки memcached, memcached.conf файл должен находиться по указанному пути /etc/memcached.conf . Затем вы можете изменить его, используя sudo vim /etc/memcached.cond для установки значений порта -p и IP-адреса прослушивания -l , как показано ниже.

 -p 11211
-l 0.0.0.0
  

Когда вы добавите правило входящего сетевого интерфейса NSG вашей виртуальной машины на вкладке Networking , вы сможете подключить службу memcached на Python через tcp-адрес <your vm host ip>:<port like 11211> .