Python redis get方法为非现有密钥引发AttributeError

时间:2016-05-19 00:08:55

标签: python redis

我有以下部分代码:

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'

1 个答案:

答案 0 :(得分:0)

看起来您可能在redis-py库中发现了一个错误。

我首先尝试更新到该库的最新版本,以及尝试其他版本,看看是否有任何不同的行为。您应该能够从此处https://github.com/andymccurdy/redis-py签出任何给定版本的文件,然后使用列出的here命令对已签出的代码进行本地安装。

您可能还想在几种不同的网络条件下尝试。跟踪中的代码路径看起来与将数据包发送到Redis服务器有关,因此可能值得测试当您没有连接到有效的服务器地址时会发生什么。

您还可以从redis cli运行Redis Monitor命令,以查看是否有任何内容进入服务器。

如果你仍然没有看到任何明显错误的那些额外的故障排除,我会在Redis-py github repo上打开一个问题,看看他们是否可以帮助追踪潜在的问题。