我已经在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
答案 0 :(得分:1)
根据您对在Azure VM上运行memcached的命令的描述,我看到您的memcached是使用Unix域套接字而不是TCP / IP运行的。 Unix domain socket是数据通信的IPC(Inter-process communication)解决方案,用于在同一主机操作系统上执行的进程之间交换数据,不能在RPC(Remote procedure call)方案中使用。 / p>
因此,要解决此问题,您只需要使用memcached.conf
启动memcached并使其在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
在标签Networking
上添加了VM NSG网络接口的入站规则后,便可以通过tcp地址<your vm host ip>:<port like 11211>
在Python中连接内存缓存服务。