Настройка Celery с Redis на сервере для приложения Django - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь настроить свой django проект для работы с Celery и Redis. У меня нет проблем с его локальным запуском, но я не могу заставить его работать на рабочем сервере.

Мой хостинг рекомендует настроить Redis с помощью unixsocket и запустить redis на экране:

  • порт 0
  • unixsocket /path/redis.sock

Это все работает, когда я запускаю redis, я получаю:

* The server is now ready to accept connections at /here-comes-my-path/redis.sock

Теперь у меня есть проблемы:

  1. Как проверить соединение? redis-cli -p 0 возвращает Could not connect to Redis at 127.0.0.1:0: Can't assign requested address not connected>
  2. Как начать работать с сельдереем? Выполнение celery -A rbwpredictor worker -l info возвращает (у меня есть конфиденциальные данные):

    Traceback (most recent call last):
    

    Файл "/usr/home/xxxx/.virtualenvs/xxxx/bin/celery", строка 6, из сельдерея. main import main Файл "/home/xxx/domains/xxxx/public_python/xxxx/celery.py", строка 6, из импорта сельдерея. Ошибка импорта сельдерея: невозможно импортировать имя 'Celery'

Мои настройки Celery в settings.py:

CELERY_RESULT_BACKEND = 'django-db'
CELERY_STATUS_PENDING = 'PENDING'
CELERY_STATUS_STARTED = 'STARTED'
CELERY_STATUS_RETRY = 'RETRY'
CELERY_STATUS_FAILURE = 'FAILURE'
CELERY_STATUS_SUCCESS = 'SUCCESS'

Как уже упоминалось выше, локально все работает нормально, я борюсь с конфигурацией на сервере.

1 Ответ

0 голосов
/ 12 января 2020

Вы настроили Redis для связи через сокет unix, а не через стандартный порт

Для подключения к Redis-Cli вы можете использовать

redis-cli -s /here-comes-my-path/redis.sock

И вам следует перенастроить Redis .conf или просто установить BROKER_URL

BROKER_URL = 'redis+socket:///here-comes-my-path/redis.sock'
...