Я чувствую, что делаю то, на что есть ответы на каждый другой вопрос.Но я не могу получить приложение Flask, использующее rq для успешного подключения к redis, несмотря на успешное подключение к redis с использованием чистого экземпляра Redis
.
В коде моего приложения из web
service:
from rq import Queue
from rq import Queue
from redis import Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=10, socket_timeout=10)
# ...
visits = redis.incr("counter")
print(f"visits: {visits}")
q = Queue(redis);
q.enqueue(my_worker.work)
и журналы:
visits: 11
rq.connections.NoRedisConnectionException: Could not resolve a Redis connection
Счетчик visits
работает правильно, поэтому очевидно, что имеется работающее соединение Redis.И все же экземпляр Queue
не может его использовать.Нет разницы, если я инициализирую отдельный экземпляр Redis
для Queue
(или оставляю счетчик полностью).
Я запускаю этот стек, используя docker stack deploy
с docker-compose.yml
, который неслишком изменено из учебника для начинающих:
version: "3"
services:
web:
image: ozydingo/workers-web:latest
deploy: #...
ports:
- "80:80"
networks:
- webnet
worker:
image: ozydingo/workers-worker:latest
deploy: #...
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy: #...
networks:
- webnet
#...
networks:
webnet:
Как мне интерпретировать ошибку из Queue
, утверждающую, что не может быть разрешено соединение Redis, когда мой экземпляр redis
говорит мне об обратном?