Ошибка AWS + Celery + ElasticCache (кластер Redis): ключи CROSSSLOT в запросе не хэшируются в один и тот же слот - PullRequest
0 голосов
/ 18 мая 2018

У меня есть сервис Dockerized Celery на AWS, и он использует ElaticCache (Redis Cluster с несколькими узлами) от AWS в качестве посредника сообщений, но я получаю следующую ошибку.

Когда я проверял своих работников из Celery на моей локальной машине, он общался с одним узлом Redis совершенно нормально.Как мне исправить эту проблему?

[I 180518 18:54:20 mixins:224] Connected to redis://....use1.cache.amazonaws.com:6379//

[E 180518 18:54:20 events:123] Failed to capture events: 'CROSSSLOT Keys in request don't hash to the same slot', trying again in 1 seconds.

...

[E 180518 18:54:23 events:123] Failed to capture events: 'Command # 1 (LLEN celeryev....2d788) of pipeline caused error: MOVED 11904 10.0.x.xxx:6379', trying again in 1 seconds.

1 Ответ

0 голосов
/ 01 декабря 2018

Эта ошибка возникает из-за того, что ключи должны находиться в одном слоте хэша, а не только в одном и том же узле.Для реализации многоключевых операций в изолированном кластере ElastiCache Redis (режим кластера включен) ключи должны быть хэшированы в один и тот же слот хэша.Вы можете принудительно ввести ключи в один и тот же слот хеша с помощью хеш-тегов.

Я также рекомендую проверить, поддерживает ли ваше приложение Redis с использованием режима кластера

Подробнее здесь и здесь

...