Назад | Перейти на главную страницу

scrapy-redis не может подключиться к AWS Redis ElastiCache

У меня есть два экземпляра Ubuntu EC2, на которых запущен Scrapy, оба используют scrapy-redis для управления дублированием. Я пытаюсь использовать ElastiCache Redis в качестве хранилища scrapy-redis. У меня точно такая же настройка в другой учетной записи AWS, и она отлично работает. Я пытаюсь воспроизвести настройку в новой учетной записи, но это не сработает. Два экземпляра EC2 и экземпляр ElastiCache находятся в одном VPC, и я следил за Эта статья для разрешения доступа группы безопасности из экземпляров Scrapy к ElastiCache. Вы можете увидеть настройку ниже:

Экземпляр ElastiCache находится в выбранной группе безопасности; две другие группы - это два экземпляра Scrapy EC2.

Проблема изолирована от scrapy-redis, потому что я могу использовать ssh в обоих окнах Scrapy и без проблем подключиться к экземпляру ElastiCache с помощью redis-cli. У меня есть правильные настройки для scrapy-redis в моем файле settings.py, например:

REDIS_HOST = 'redis.xxxx.ng.0001.use2.cache.amazonaws.com'
REDIS_PORT = 6379

Ошибка, которую я получаю от scrapy-redis,

File "/usr/local/lib/python3.5/dist-packages/redis/connection.py", line 486, in connect
    raise TimeoutError("Timeout connecting to server")
redis.exceptions.TimeoutError: Timeout connecting to server

Я хватаюсь за соломинку здесь, но я создал свои экземпляры Scrapy из AMI, который я создал в исходной учетной записи, где настройка работает правильно, так что, может быть, проблема в этом? Любая помощь будет оценена.

Я недостаточно силен в Python, чтобы точно понять, почему, но мы поняли, что проблема связана с тем, в каком каталоге мы находились при запуске ScrapyD. Очевидно, вам нужно находиться в том же каталоге, что и settings.py, а не выше или ниже, когда вы запускаете ScrapyD, иначе соединения Redis не распознаются. Это решает проблему, но если кто-нибудь знает причину, не стесняйтесь добавлять.