Как обработать «Redis.exceptions.ConnectionError: у соединения есть данные» - PullRequest
0 голосов
/ 06 апреля 2020

Я получаю следующий вывод:

Traceback (most recent call last):
  File "/home/ec2-user/env/lib64/python3.7/site-packages/redis/connection.py", line 1192, in get_connection
    raise ConnectionError('Connection has data')
redis.exceptions.ConnectionError: Connection has data

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ec2-user/env/lib64/python3.7/site-packages/eventlet/hubs/hub.py", line 457, in fire_timers
    timer()
  File "/home/ec2-user/env/lib64/python3.7/site-packages/eventlet/hubs/timer.py", line 58, in __call__
    cb(*args, **kw)
  File "/home/ec2-user/env/lib64/python3.7/site-packages/eventlet/greenthread.py", line 214, in main
    result = function(*args, **kwargs)
  File "crawler.py", line 53, in fetch_listing
    url = dequeue_url()
  File "/home/ec2-user/WebCrawler/helpers.py", line 109, in dequeue_url
    return redis.spop("listing_url_queue")
  File "/home/ec2-user/env/lib64/python3.7/site-packages/redis/client.py", line 2255, in spop
    return self.execute_command('SPOP', name, *args)
  File "/home/ec2-user/env/lib64/python3.7/site-packages/redis/client.py", line 875, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/home/ec2-user/env/lib64/python3.7/site-packages/redis/connection.py", line 1197, in get_connection
    raise ConnectionError('Connection not ready')
redis.exceptions.ConnectionError: Connection not ready

Я не смог найти ни одной проблемы, связанной с этой конкретной ошибкой. Я опустошил / сбросил все базы данных redis, поэтому там не должно быть никаких данных. Я предполагаю, что это как-то связано с eventlet и исправлениями. Но даже когда я помещаю следующий код в начало файла, появляется ошибка.

import eventlet
eventlet.monkey_path()

Что означает эта ошибка?

1 Ответ

0 голосов
/ 14 апреля 2020

Наконец, я пришел к ответу на мою проблему. При подключении к redis с python я указывал базу данных с номером 0.

redis = redis.Redis(host=example.com, port=6379, db=0)

После изменения базы данных на число 1 все заработало.

redis = redis.Redis(host=example.com, port=6379, db=1)
...