Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python memcached无法获取或设置“JAC_SF”_Python_Memcached_Python Memcached - Fatal编程技术网

python memcached无法获取或设置“JAC_SF”

python memcached无法获取或设置“JAC_SF”,python,memcached,python-memcached,Python,Memcached,Python Memcached,在检查了一大堆东西之后,我发现对于一些密钥,python memcached无法获取,或者无法在我的机器上设置它们:Mac OSX 10.9、自制memcache 1.4.15、pip安装的python memcached 1.53。我的第一个问题是在黑暗中拍摄,不清楚发生了什么,但经过更多的挖掘,我现在肯定现在 一切都取决于你 def_get_serverself,键: 如果我们添加两个调试打印输出行 def _get_server(self, key): if isinstance(

在检查了一大堆东西之后,我发现对于一些密钥,python memcached无法获取,或者无法在我的机器上设置它们:Mac OSX 10.9、自制memcache 1.4.15、pip安装的python memcached 1.53。我的第一个问题是在黑暗中拍摄,不清楚发生了什么,但经过更多的挖掘,我现在肯定现在

一切都取决于你 def_get_serverself,键:

如果我们添加两个调试打印输出行

def _get_server(self, key):
    if isinstance(key, tuple):
        serverhash, key = key
    else:
        serverhash = serverHashFunction(key)

    for i in range(Client._SERVER_RETRIES):
        server = self.buckets[serverhash % len(self.buckets)]
        if server.connect():
            #print "(using server %s)" % server,
            print 'got server {} for {}'.format(serverhash % len(self.buckets),
                                                key)
            return server, key
        print 'server {} failed for {}'.format(serverhash % len(self.buckets),
                                            key)
        serverhash = serverHashFunction(str(serverhash) + str(i))
    return None, None
试图获取或设置“NFL::CAR_TB”键

import memcache
mc_cl = memcache.Client('127.0.0.1')
mc_cl.set('JAC_SF', 1)
mc_cl.get('JAC_SF')
mc_cl.set('UAC_SF', 1)
mc_cl.get('UAC_SF')
结果,在我的机器上

server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 2 (inet:7:11211 (dead until 1384821475)) failed for JAC_SF
server 5 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 2 (inet:7:11211 (dead until 1384821475)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 2 (inet:7:11211 (dead until 1384821475)) failed for JAC_SF
server 5 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for JAC_SF
server 2 (inet:7:11211 (dead until 1384821475)) failed for JAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for UAC_SF
got server 6 for UAC_SF
server 7 (inet:.:11211 (dead until 1384821475)) failed for UAC_SF
got server 6 for UAC_SF
如果我把服务器改成

def _get_server(self, key):
    choices = range(len(self.buckets) - 1)
    random.shuffle(choices)

    if isinstance(key, tuple):
        choice, key = key
    else:
        choice = choices.pop()

    for _ in range(Client._SERVER_RETRIES):
        server = self.buckets[choice]
        if server.connect():
            #print "(using server %s)" % server,
            print 'got server {} for {}'.format(choice,
                                                key)
            return server, key
        print 'server {} ({}) failed for {}'.format(choice, server, key)
        choice = choices.pop()
    return None, None
那么一切都会好得多

got server 4 for JAC_SF
server 0 (inet:1:11211 (dead until 1384821552)) failed for JAC_SF
server 3 (inet:.:11211 (dead until 1384821552)) failed for JAC_SF
got server 4 for JAC_SF
server 7 (inet:.:11211 (dead until 1384821552)) failed for UAC_SF
server 0 (inet:1:11211 (dead until 1384821552)) failed for UAC_SF
got server 6 for UAC_SF
server 7 (inet:.:11211 (dead until 1384821552)) failed for UAC_SF
server 2 (inet:7:11211 (dead until 1384821552)) failed for UAC_SF
server 5 (inet:.:11211 (dead until 1384821552)) failed for UAC_SF
server 1 (inet:2:11211 (dead until 1384821552)) failed for UAC_SF
got server 6 for UAC_SF
在python程序中设置多个键时,我得到了非常不一致的结果, 导入memcache 两小时=2*60*60 mc_cl=memcache.Client'127.0.0.1' 映射={…} mc_cl.flush_all ret=mc\u cl.set\u multimapping=mapping,time=2小时 getret=mc_cl.get_multimapping.keys 如果lenmapping!=长度组: 打印“未设置”\n\t{}。格式为“\n\t”。为中的k连接[strk,映射[k] [a用于mapping.keys中的a 如果在getret.keys中没有 在分析原始memcache输出之后,似乎并不是所有的键都被设置,也不是所有的键都被请求。在Mac OSX 10.9上,在自制和pip上完成所有事情并保持最新。 下面的Memcache output and reading表示,仅尝试写入和读取101个键,而有228个项。 进口稀土 gamesSet=[] gamesGet=[] 将打开的'memout.log'作为f: 对于f.read.split'\n'中的行: 匹配=重新匹配“^21”确定 22好的 21存储
这是一个奇怪的问题,我目前正在与python memcached库的编写者/维护者争论

随机的,这里的错误是第一行

mc_cl = memcache.Client('127.0.0.1')
客户端需要一个iterable,但不确保检查它是否得到字符串,因此以一种非常python的方式,它将此字符串视为一个iterable并对其进行迭代,将“1”、“2”、“7”和“0”中的每一个设置为memcached服务器的IP地址,但真正令人困惑的是“0”实际上是一个有效的IP地址,计算结果为0.0.0.0,并由本地memcached服务器提供服务,如果您是这样设置的,那么我的开发环境就是这样设置的

如果你把它改成

mc_cl = memcache.Client(('127.0.0.1',))
一切工作都完全按照预期进行,但是如果您传入“127.0.0.1”字符串,您不会收到任何错误消息,也不会收到任何未设置密钥的报告,也不会收到“获取”的报告,只是上述非常不稳定和无法解释的行为