docker - 与 docker 内的 celery 交谈
问题描述
我在 docker 内运行 celery-worker 和 celery-beat。
当我这样做时,celery logs -f celery-worker
我可以看到芹菜正在运行
现在我想向工人发送一些任务(用于测试目的)..
似乎有两种方法可以做到这一点(如何手动从shell运行芹菜定期任务?)使用django shell
和使用celery
命令本身我在docker中没有manage.py,所以我正在使用celery
命令
但是,包括挂起在内的所有 celery 命令celery inspect registered
都没有给我任何东西。
如何将任务发送到在 docker 内运行的 celery?
解决方案
我相信它挂起是因为您无法连接到经纪人。
在运行命令之前,您需要将CELERY_BROKER_URL
环境变量设置为正确的 url 。celery
如果您使用的是 docker compose,您应该有一个或多或少类似于此的代理服务:
broker:
container_name: broker
image: redis:6.0
ports:
- 6379:6379
volumes:
- ./volumes/redis_data:/data
基本上我们可以使用 localhost:6379 从我们的主机连接到我们的代理。
因此,在终端中,您可以设置以下环境变量
$ export CELERY_BROKER_URL=redis://localhost:6379/0
和 celery 命令现在应该返回结果。
推荐阅读
- node.js - Sequelize 无法访问 GCP Cloud SQL
- reactjs - 从 mongodb 中匹配此值的文档数组中删除许多项目
- javascript - Vue v-if不隐藏移动标题
- javascript - 从 obj 匹配时无法形成结构和更新标志值
- android - 横幅广告未显示真实单位 ID
- ruby-on-rails - Rails 6,切换Git分支后架构文件与迁移文件不匹配
- testing - Testcafe:您要切换到的 iframe 的内容未加载
- java - java - 如何将包含用逗号分隔的数字的字符串转换为Java中的整数?
- javascript - Cloud Functions:exports.function = vs export const function = 有什么区别?
- postgresql - 用于 postgres 10 连接器的 debezium 1.2