【问题标题】:redis connection error within docker containerdocker容器内的redis连接错误
【发布时间】:2020-08-05 15:57:42
【问题描述】:

我正在尝试设置一个在 Docker 中运行的轻量级 RQ 任务队列应用程序。我不断收到此错误:

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

当从环境变量 (os.getenv()) 中获取时,它不起作用,但不知何故,当在 redis://redis:6379/0 中进行硬编码时,它似乎起作用了。然而,在我看来,这并不是一个真正的长期解决方案。我看了看:link1link2,但没有真正的解决方案,线程死了。

我的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'

感谢任何帮助。谢谢。

【问题讨论】:

    标签: python-3.x flask redis docker-compose


    【解决方案1】:

    发现字符串末尾有一个神秘的\,所以我使用了.strip(),它使用.getenv()方法工作。我认为这与 docker-compose 如何将变量传递给烧瓶有关;我的最佳猜测。

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 1970-01-01
      • 2020-02-08
      • 2019-05-11
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多