【发布时间】: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 中进行硬编码时,它似乎起作用了。然而,在我看来,这并不是一个真正的长期解决方案。我看了看: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'
感谢任何帮助。谢谢。
【问题讨论】:
标签: python-3.x flask redis docker-compose