我在Azure VM服务器(Ubuntu)上安装了Memcached。我现在需要从我在其他地方运行的Python程序连接到这个。
当它们安装在同一台服务器上时,这有效:
import memcache
MEMCACHE_SOCKET_PATH = 'unix:<path_to>/memcached.sock'
memcache_client = memcache.Client([MEMCACHE_SOCKET_PATH], debug=0)
现在我不确定MEMCACHE_SOCKET_PATH的用途。运行Memcached的VM有一个静态IP地址,我创建了一个端点(打开一个端口)到11211. memcached.sock位于主目录中。
这就是我在VM上运行Memcached的方式:
memcached -d -m 500 -s $HOME/memcached.sock -P $HOME/memcached.pid
根据你在Azure VM上运行memcached的命令的描述,我看到你的memcached运行的是Unix域套接字,而不是TCP / IP。 Unix domain socket是一个IPC(Inter-process communication)数据通信解决方案,用于在同一主机操作系统上执行的进程之间交换数据,它不能用于RPC(Remote procedure call)场景。
所以要修复它,你只需要使用memcached.conf
启动memcached并使其在TCP / IP上运行。如果您使用命令sudo apt-get install memcached
安装memcached,则memcached.conf
文件应位于路径/etc/memcached.conf
。然后你可以通过使用sudo vim /etc/memcached.cond
来设置端口-p
和listen ip -l
的值来改变它,如下所示。
-p 11211
-l 0.0.0.0
当您在选项卡Networking
中添加了VM NSG网络接口的入站规则时,您可以通过tcp地址<your vm host ip>:<port like 11211>
连接Python中的memcached服务。