我有以下部分代码:
rd = redis.Redis(host, port, db, password, socket_timeout,
connection_pool, charset, errors, unix_socket_path)
check_flag = rd.get("some_key")
if check_flag is not None:
do_something()
但Redis的get
方法引发了一个AttributeError:
AttributeError: 'str' object has no attribute 'iteritems'
我不确定在这里分享回溯的全文是否可以。
我正在使用redis 2.10.5
有人知道发生了什么事吗?
P.S。我正在通过stackoverflow查看相同的问题,但没有成功
UPD:添加了完整的追溯
init_flag = self.redis.get("face_init")
File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 880, in get
return self.execute_command('GET', name)
File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 572, in execute_command
connection.send_command(*args)
File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 563, in send_command
self.send_packed_command(self.pack_command(*args))
File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 538, in send_packed_command
self.connect()
File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 439, in connect
sock = self._connect()
File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 475, in _connect
for k, v in iteritems(self.socket_keepalive_options):
File "/usr/local/lib/python2.7/dist-packages/redis/_compat.py", line 27, in iteritems
return x.iteritems()
AttributeError: 'str' object has no attribute 'iteritems'
答案 0 :(得分:0)
看起来您可能在redis-py库中发现了一个错误。
我首先尝试更新到该库的最新版本,以及尝试其他版本,看看是否有任何不同的行为。您应该能够从此处https://github.com/andymccurdy/redis-py签出任何给定版本的文件,然后使用列出的here命令对已签出的代码进行本地安装。
您可能还想在几种不同的网络条件下尝试。跟踪中的代码路径看起来与将数据包发送到Redis服务器有关,因此可能值得测试当您没有连接到有效的服务器地址时会发生什么。
您还可以从redis cli运行Redis Monitor命令,以查看是否有任何内容进入服务器。
如果你仍然没有看到任何明显错误的那些额外的故障排除,我会在Redis-py github repo上打开一个问题,看看他们是否可以帮助追踪潜在的问题。