【问题标题】:Problem running celery in a different docker container than the Flask app在与 Flask 应用程序不同的 docker 容器中运行 celery 时出现问题
【发布时间】:2018-09-12 09:53:31
【问题描述】:

我正在运行一个带有 Celery 的 Flask 应用程序,用于使用 docker-compose 提交子进程。 但是,当尝试在不同的容器中运行 Celery 时,我无法使其正常工作。

如果我在同一个容器中运行 Celery,我正在运行烧瓶应用程序,它可以工作,但感觉是错误的方式,我将两个不同的东西耦合到一个容器中,通过在烧瓶应用程序之前的启动脚本中添加它运行:

nohup celery worker -A app.controller.engine.celery -l info &

但是,如果我在 docker-compose.yml 中添加 Celery 作为新容器,它就不起作用。这是我的配置:

(..)

engine:
  image: engine:latest
  container_name: engine
  ports:
    - 5000:5000
  volumes:
    - $HOME/data/engine-import:/app/import
  depends_on:
    - mongo
    - redis
  environment:
    - HOST=localhost

celery:
  image: engine:latest
  environment:
        - C_FORCE_ROOT=true
  command: ["/bin/bash", "-c", "./start-celery.sh"]
  user: nobody
  depends_on:
    - redis

(..)

这是 start-celery.sh:

#!/bin/bash
source ./env/bin/activate

cd ..
celery worker -A app.controller.engine.celery -l info

它的日志:

INFO:engineio:Server initialized for eventlet.
INFO:engineio:Server initialized for threading.
[2018-09-12 09:43:19,649: INFO/MainProcess] Connected to redis://redis:6379//
[2018-09-12 09:43:19,664: INFO/MainProcess] mingle: searching for neighbors
[2018-09-12 09:43:20,697: INFO/MainProcess] mingle: all alone
[2018-09-12 09:43:20,714: INFO/MainProcess] celery@8729618bd4bc ready.

仅此而已,流程不会提交给它。

可能缺少什么?

【问题讨论】:

  • 代码库是否存在于映射卷中?我假设它是相同的,它不应该也映射到芹菜容器中吗?
  • 在使用相同图像运行 celery 时是否应该映射代码?该行不是代码,而是通过应用程序导入的特定文件的导入文件夹。
  • 我的意思是,你确定 celery 容器内的代码库与你引擎容器内的代码库完全一样吗?是否还有 Celery 日志输出(调试)?你能让 Celery 在启动时记录应用程序的注册任务吗?
  • 你能进入你的 celery 容器并尝试celery worker -A app.controller.engine.celery inspect registered 看看你的任务是否已注册?

标签: python-3.x docker flask docker-compose celery


【解决方案1】:

我发现只有将它添加到 celery 服务的 docker-compose 定义中才有效:

environment: 
      - C_FORCE_ROOT=true

我想知道为什么我没有收到任何错误。

【讨论】:

    猜你喜欢
    • 2022-12-28
    • 2021-04-02
    • 2016-02-29
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多