Celery Worker 在使用文件系统作为代理时创建“控制”文件夹

问题描述 投票:0回答:1

我有一个使用 Celery 和 Redis 后端来管理任务的项目。对于本地开发,我尝试使用文件系统设置 Celery 作为代理而不是 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)

到目前为止我已经尝试过:

  • 从与 root 不同的目录运行 Celery 工作程序,但工作程序不会收到任何任务。

  • 在运行 Celery Worker 时提供

    --workdir
    参数,但它似乎在 Celery Worker 和 Celery 应用程序之间创建了不同的路径,因此失败。

python celery celeryd celery-broker
1个回答
0
投票

设置

control_folder
字段对我来说很有效:

CELERY_BROKER_TRANSPORT_OPTIONS = {
    "data_folder_in": os.path.join(BASE_DIR, ".celery"),
    "data_folder_out": os.path.join(BASE_DIR, ".celery"),
    "control_folder": os.path.join(BASE_DIR, ".celery"),
}

所以对于你来说,我想,会是:

broker_transport_options = {
    "data_folder_in": ".celery/broker/out",
    "data_folder_out": ".celery/broker/out",
    "queue_order_strategy": "sorted",
    "control_folder": ".celery/broker/out",
}
© www.soinside.com 2019 - 2024. All rights reserved.