#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>
.