如何解决与docker内部的celery交谈
我正在docker中运行celery-worker和celery-beat。
当我做celery logs -f celery-worker
时,我可以看到芹菜已经启动并正在运行
现在,我想向工作人员发送一些任务(出于测试目的)。
似乎有两种方法可以做到这一点(How can I run a celery periodic task from the shell manually?)
使用django shell
并使用celery
命令本身
我在docker中没有manage.py,所以我正在使用celery
命令
但是,所有芹菜命令,包括celery inspect registered
都挂起了,什么也没给我。
如何将任务发送到在docker内部运行的celery?
解决方法
我认为它挂起是因为您无法连接到代理。
在运行CELERY_BROKER_URL
命令之前,需要将celery
环境变量设置为正确的url。
如果您使用的是docker compose,则应该或多或少具有以下代理服务:
broker:
container_name: broker
image: redis:6.0
ports:
- 6379:6379
volumes:
- ./volumes/redis_data:/data
基本上,我们可以使用localhost:6379从主机连接到代理。
因此,在终端中,您可以设置以下env var
$ export CELERY_BROKER_URL=redis://localhost:6379/0
和celery命令现在应该返回结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。