Есть приложение на Django,
Postgresql и Redis запущены в докер контейнере, с базой все нормально а вот Celery не получается подключить к redis вот кусочек с docker-compose
redis:
image: redis
command: redis-server
ports:
- "14000:6379"
Сам redis стартует в контейнере.
не могу сообразить что должно быть указано в CELERY_BROKER_URL и CELERY_RESULT_BACKEND в качестве адресов, само приложение не находится в контейнере!
app = Celery('django_drf',
broker='redis://localhost:14000/0',
)
так не работает он начинает стучаться на локальный redis? не могу понять в качестве transport что использовать вместо redis просто указать localhost Celery так не понимает,
-- ******* ---- Linux-5.4.0-126-generic-x86_64-with-glibc2.29 2022-10-10 07:10:39
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: django_drf:0x7f0ba8567070
- ** ---------- .> transport: redis://localhost:14000/0
- ** ---------- .> results: disabled://
- *** --- * --- .> concurrency: 6 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[2022-10-10 07:11:35,747: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:14000/0: Error 111 connecting to localhost:14000. Connection refused..
Закрываю вопрос все оказалось проще, Redis запускался в контейнере но почему-то не выглядывал наружу,
посмотрел порты и действительно не было этого портаю
app = Celery('django_drf',
broker='redis://localhost:14000/0', backend="redis://localhost:14000/1"
)
Немного переписал docker-compose теперь порт прокидывается внутрь контейнера и все запустилось!
redis:
container_name: redis_container
image: redis
command: redis-server
ports:
- "14000:6379"
networks:
- postgres