微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Redis多处理-redis.exceptions.ConnectionError-

如何解决Python Redis多处理-redis.exceptions.ConnectionError-

我编写了一个程序,该程序可以进行多处理并执行“扫描,获取和设置为Redis”。我们选择Redis的原因是为了加快速度。

有人有任何建议吗?我尝试在get语句周围放置一个重试循环(也可以对set语句执行此操作),但是Scan语句会比较棘手。并有一些我更改或增加的参数可以避免这种情况吗?

错误

redis.exceptions.ConnectionError: Error 10048 connecting to 192.168.5.51:6379. Only one usage of each socket address (protocol/network address/port) is normally permitted.
  File "C:\Apps\ProcessData\redis\connection.py",line 1192,in get_connection
    connection.connect()
  File "C:\Apps\ProcessData\redis\connection.py",line 563,in connect
    raise ConnectionError(self._error_message(e))
  File "C:\Apps\ProcessData\redis\connection.py",in connect
    raise ConnectionError(self._error_message(e))

我认为错误的第二部分是:等待再次发生以获取准确的文本:

Error 10048 connecting to 192.168.5.51:6379. Only one usage of each socket address (protocol/network address/port) is normally permitted.

对于执行redis-get的代码,我正在尝试以下操作:

redis_max_retries = 72
redis_retries = 0
redis_get_success = False
sleep_time_in_seconds = .1
while not redis_get_success and redis_retries < redis_max_retries:
    try:
       json_str = redis_obj.get(redis_key)
       redis_get_success = True
    except redis.exceptions.ConnectionError as e:
        redis_retries += 1
        time.sleep(sleep_time_in_seconds)

if not redis_get_success:
    print("redis_retries=",redis_retries," on json_str = redis_obj.get(redis_key) in process_intervals" )
    sys.exit(0)

但是我在扫描中也得到了错误,重试起来似乎比较棘手。

    for keybatch in batcher(redis_obj.scan_iter(key_pattern),1500):
        batch_counter += 1
        # print(batch_counter,"keybatch=",keybatch)

        for key in keybatch:
            if key is not None:
                #print("Trying key=",key)
                matching_keys_found += 1
                etc... 

解决方法

尝试连接到RedisLabs.com之类的在线Redis托管站点并使用documentation进行连接,或者您可以尝试更改端口。 错误可能是由于端口或Redis服务器设置错误配置引起的。 另外,对于相同的端口和地址,请参见Only one usage of each socket address (protocol/network address/port) is normally permitted?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。