首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Redis Multiprocessing - redis.exceptions.ConnectionError -

Python Redis Multiprocessing - redis.exceptions.ConnectionError -
EN

Stack Overflow用户
提问于 2020-10-30 01:23:28
回答 1查看 566关注 0票数 0

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

有没有人有什么建议。我尝试在get语句周围放置一个重试循环(对于set也可以这样做),但是Scan语句将更加棘手。是否有一些参数可以通过扫描、更改或增加来避免这种情况?

错误:

代码语言:javascript
复制
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", line 563, in connect
    raise ConnectionError(self._error_message(e))

我认为错误的第二部分是这样的:等待它再次发生以获得确切的文本:

代码语言:javascript
复制
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的代码,我尝试执行以下操作:

代码语言:javascript
复制
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)

但我在扫描时也会遇到错误,这看起来更难重试。

代码语言:javascript
复制
    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... 
EN

回答 1

Stack Overflow用户

发布于 2020-10-30 02:58:50

尝试连接到在线Redis托管网站,如RedisLabs.com,并使用documentation连接,或者您可以尝试更改端口。错误可能来自端口或Redis服务器设置错误。同样,对于相同的端口和地址,请参阅Only one usage of each socket address (protocol/network address/port) is normally permitted?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64596207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档