Как соединить сельдерей с редисом?

#python #redis #celery

Вопрос:

Я взял бесплатную пробную версию Redis, и она дала мне конечную точку с паролем. Я раньше ничего не делал с Redis или сельдереем, поэтому я действительно понятия не имею, как это работает. Из документов Сельдерея все подключаются к локальному хосту, но как я могу подключиться к этой конечной точке?

 CELERY_BROKER_URL='redis://localhost:6379',
CELERY_RESULT_BACKEND='redis://localhost:6379'
 

Чем я должен это заменить? Где я должен ввести пароль?

Моя конечная точка выглядит примерно так: redis-18394.c252.######.cloud.redislabs.com:18394 , Должен ли я добавить пароль в конце этого после a / ?

Ответ №1:

Согласно документации сельдерея, формат

 redis://:password@hostname:port/db_number
 

По умолчанию redis имеет 16 баз данных, поэтому вы можете использовать любое число от 0 до 15 для db_number. Используйте другой номер базы данных для брокера и серверной части результатов.

https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/redis.html#configuration

Комментарии:

1. Я могу подтвердить, что этот формат сработал. Я установил URL-адрес брокера на конечную точку redis с паролем и установил db_number равным 0.

Ответ №2:

Для этого вы можете использовать channel_redis

 CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": ["password@your_ip"],
        },
    },
}
 

Комментарии:

1. Не могли бы вы просто показать мне полный код? Как этот канал передается сельдерею?

2. Я добавил ссылку на репо прямо над кодом. У него есть хороший readme, на который вы можете ссылаться!