You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Celery以文件系统为Broker时生成control文件夹的迁移问题

Celery文件系统Broker下control文件夹的迁移方案

我用Celery+Redis做任务管理的项目,本地开发想换成文件系统当Broker替代Redis。但启动Celery Worker后,根目录会生成一个control文件夹,结构如下:

/control
├── celery.pidbox.exchange
├── Q1.exchange
├── Q2.exchange
├── ...

这个文件夹找不到相关资料说明用途,现在想把它移到.celery/目录下,避免占用根目录。

当前Celery配置:

class CeleryLocalConfig:

    include = ["app.tasks"]
    broker_url = "filesystem://"
    result_backend = "file://.celery/broker/results"
    broker_transport_options = {
        "data_folder_in": ".celery/broker/out",
        "data_folder_out": ".celery/broker/out",
        "queue_order_strategy": "sorted"
    }

celery_app = Celery(__name__)
celery_app.config_from_object(CeleryLocalConfig)

已尝试的方法:

  • 从非根目录启动Celery Worker,Worker无法接收任务
  • 启动Worker时添加--workdir参数,导致Worker与Celery App路径不一致,启动失败

解决办法

这个control文件夹是文件系统Broker用来存储内部交换队列元数据的,包含Celery内部通信队列(pidbox)和各任务队列的交换配置信息。要修改它的存储位置,只需在broker_transport_options中新增control_folder参数,指定目标路径即可。

修改后的配置:

class CeleryLocalConfig:

    include = ["app.tasks"]
    broker_url = "filesystem://"
    result_backend = "file://.celery/broker/results"
    broker_transport_options = {
        "data_folder_in": ".celery/broker/out",
        "data_folder_out": ".celery/broker/out",
        "control_folder": ".celery/broker/control",  # 指定control文件夹的新位置
        "queue_order_strategy": "sorted"
    }

celery_app = Celery(__name__)
celery_app.config_from_object(CeleryLocalConfig)

说明

  • 添加control_folder参数后,原根目录的control文件夹不再生成,所有相关元数据文件会自动存储到指定的.celery/broker/control目录下
  • 无需手动创建目标目录,Celery会自动生成不存在的路径

内容的提问来源于stack exchange,提问作者krzysiek0011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:19