ошибка подключения redis в контейнере docker - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь настроить облегченное приложение очереди задач RQ, работающее в Docker. Я продолжаю получать эту ошибку:

ValueError: Redis URL must specify one of the following schemes (redis://, rediss://, unix://)

При захвате из переменной окружения (os.getenv()) это не работает, но каким-то образом при жестком кодировании в redis://redis:6379/0 это вроде работает. Однако, на мой взгляд, это не долгосрочное решение. Я посмотрел: link1 и link2 , но на самом деле решения не было, поток отключился.

Мой код подключения Redis выглядит так:

import os
import redis
from rq import Worker, Queue, Connection

listen = ['default']
redis_url = os.getenv('REDIS_URL', 'redis://localhost:6379')

if __name__ == '__main__':
    print(f"redis url: {redis_url}")
    with Connection(redis.from_url(redis_url)):
        worker = Worker(list(map(Queue, listen)))
        worker.work()

Когда он печатает redis_url, это правильно; Я установил переменную окружения, REDIS_URL на redis://redis:6379, где redis - имя хоста в docker -compose.yml.

  redis:
    image: redis:alpine
    expose:
      - '6379'

Благодарю за любую помощь. Спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Выяснилось, что на концах строки были загадочные \, поэтому я использовал .strip(), и он работает с использованием метода .getenv(). Я думаю, это как-то связано с тем, как docker -compose передает переменную в колбу; мое лучшее предположение.

...