2

如何使用 memcached.sock 的路径连接到 Python-memcached?(Python 2.7)

Memcached 预装在我的主机(Webfaction)上。我已经启动它并验证它正在运行。我还验证了 memcached.sock 在我的主目录中。文档说:

“一旦你的 Memcached 实例启动并运行,你可以通过使用 memcached 的软件或库通过套接字文件 (~/memcached.sock) 的路径访问它。”

我试过这个:

import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=1)
mc.set("some_key", "Some value")

但我在 mc.set 上遇到错误:

Connection refused.  Marking dead.

我也试过

mc = memcache.Client('~/memcached.sock', debug=1)

然后 mc.set 上的错误是

Name or service not known.  Marking dead.
4

1 回答 1

3

我通过这样做使它工作:

设置:

memcached -d -s /tmp/memcached.sock

编码:

import memcache
mc = memcache.Client(['unix:/tmp/memcached.sock'], debug=0)
mc.set('hello', 'world')
print(mc.get('hello'))

完整的测试:

docker run --rm -t python:3.6 bash -c "$(cat << 'EOF'
# setup
apt-get update && \
apt-get install -y memcached && \

# start memcached
memcached -u nobody -d -s /tmp/memcached.sock && \

# install the requirements
pip install python-memcached && \

# run the code
python <(cat << FOE
import memcache
mc = memcache.Client(['unix:/tmp/memcached.sock'], debug=0)
mc.set('hello', 'world')
print(mc.get('hello'))
FOE
)

EOF
)"

...剧透,它打印出来"world"

于 2018-03-24T18:33:03.047 回答