首页 > 解决方案 > 与 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?

标签: dockercelery

解决方案


我相信它挂起是因为您无法连接到经纪人。

在运行命令之前,您需要将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 命令现在应该返回结果。


推荐阅读