【发布时间】:2018-04-26 14:12:55
【问题描述】:
我有一个运行 Django 应用程序的 dockerized 设置,我在其中使用 Celery 任务。 Celery 使用 Redis 作为代理。
版本控制:
- Docker 版本 17.09.0-ce,构建 afdb6d4
- docker-compose 版本 1.15.0,构建 e12f3b9
- Django==1.9.6
- django-celery-beat==1.0.1
- celery==4.1.0
- 芹菜[redis]
- redis==2.10.5
问题:
我的 celery worker 似乎无法连接到位于 localhost:6379 的 redis 容器。我能够在指定端口上远程登录到 redis 服务器。我能够验证 redis-server 是否在容器上运行。
当我手动连接到 Celery docker 实例并尝试使用命令 celery -A backend worker -l info 创建一个工作器时,我收到了通知:
[2017-11-13 18:07:50,937: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379/0: Error 99 connecting to localhost:6379. Cannot assign requested address..
Trying again in 4.00 seconds...
注意事项:
我可以通过 6379 端口远程登录到 redis 容器。在 redis 容器上,redis-server 正在运行。
我还有什么遗漏的吗?我已经在兔子洞里走得很远了,但感觉我错过了一些非常简单的东西。
Docker 配置文件:
【问题讨论】:
-
尝试用
127.0.0.1替换localhost -
你有 docker-compose 文件吗?分享吧。
-
@Opal 将配置文件添加到帖子底部。
-
当我更改为 127.0.0.1 时,@warvariuc 的结果相同。另外需要注意的是,使用 redis 容器的 docker IP 地址也不起作用。
-
肯定不会是
localhost,因为redis不工作不能和celery在同一个主机上工作。你能通过 celery 的 IP ping redis 吗?
标签: python django docker docker-compose celery