【问题标题】:talk to celery inside docker与 docker 内的 celery 交谈
【发布时间】:2020-12-05 15:31:31
【问题描述】:

我在 docker 中运行 celery-worker 和 celery-beat。

当我执行celery logs -f celery-worker 时,我可以看到 celery 正在运行

现在我想向工作人员发送一些任务(用于测试目的)..

似乎有两种方法可以做到这一点 (How can I run a celery periodic task from the shell manually?) 使用django shell 和使用celery 命令本身 我在docker中没有manage.py,所以我使用celery命令

但是,包括celery inspect registered 在内的所有 celery 命令都挂起并且什么也没给我。

如何向 docker 内运行的 celery 发送任务?

【问题讨论】:

    标签: docker celery


    【解决方案1】:

    我认为它挂起是因为您无法连接到代理。

    在运行celery 命令之前,您需要将CELERY_BROKER_URL 环境变量设置为正确的url。

    如果您使用 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 命令现在应该返回一个结果。

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2018-01-09
      • 2021-12-07
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多