cans.celery-worker-setup
celery-worker
一个用于设置一组由 systemd 管理的 Celery worker 的角色。
每个 worker 都必须通过如下所示的项进行描述:
- app_name: 'MyApp' # (必填)
app_variable: 'my_app' # (默认: `celeryw_app_variable`)
celeryd_bin: '/usr/local/bin/celery' # (默认: `celeryw_bin`)
group: "adm" # (默认: `celeryw_`)
log_dir: # (默认: `celeryw_log_dir`)
log_filename: "%n%I" # (默认: `celeryw_log_filename`)
log_level: "INFO" # (默认: `celeryw_log_level`)
pid_filename: `%n-master.pid` # (默认: `celeryw_pid_filename`)
queues: `%n-master.pid` # (默认: `celeryw_queues`)
基本上,下面 角色变量 部分中的所有变量都可以在描述 worker 的项中被覆盖,使用与变量同名的键(省略角色命名空间前缀)。唯一的两个例外是 app_name
和 app_module
变量,您 必须 为定义的每个 worker 提供这两个变量。
要求
此角色没有任何要求。
角色变量
此角色中的所有变量都带有 celeryw_
前缀。
默认值
celeryw_app_variable
: 模块级变量,持有 Celery 应用的引用(默认: "app");celeryw_bin
: Celery 可执行文件的路径(默认: "/usr/bin/celery")celeryw_daemon_options
: 需要在 Celery 命令行中 原样 传递的额外选项(默认: "");celeryw_etc_dir
: 存放 Celery worker 配置文件的目录路径(默认: "/etc/celery");celeryw_group
: Celery 进程应运行的用户组(默认:{{ansible_user_id}}
)celeryw_log_dir
: 存放 Celery 日志文件的目录路径(默认:/var/log/celery
);celeryw_log_filename
: 日志文件的使用名称。有关可用模板替代的信息,请参考 Celery 文档(默认:%n%I.log
);celeryw_log_level
: (默认:ERROR
)celeryw_pid_filename
:%n.pid
celeryw_queues
: "celery"celeryw_run_dir
: 存放 Celery PID 文件等的路径(默认:/var/run/celery
)celeryw_user
: Celery 进程应运行的身份(默认:{{ansible_user_id}}
)celeryw_workers
: 包含要设置的 worker 列表的变量(默认:[]
);
提供给其他角色的变量
无
依赖关系
为了让 systemd 为您管理 Celery worker,此角色依赖于 cans.systemd-unit-install
角色。
示例 Playbook
第一个示例将配置两个应用的 worker,主要依赖于角色提供的 默认值:
- hosts: servers
roles:
- role: cans.celery-worker
celeryw_workers:
- app_name: "mailer"
app_module: "application.interfaces.tasks.mailer"
- app_name: "data-cruncher"
app_module: "application.interfaces.tasks.cruncher"
第二个示例在 playbook 的 vars
部分覆盖了更多变量,有些是在全局级别,有些是在 worker 描述级别:
- hosts: servers
vars:
celeryw_bin: "/opt/local/python-virtualenvs/python3.6/bin/celery"
roles:
- role: cans.celery-worker
celeryw_workers:
- app_name: "mailer"
app_module: "application.interfaces.tasks.mailer"
- app_name: "data-cruncher"
app_module: "application.interfaces.tasks.cruncher"
app_variable: "cruncher_app"
- app_name: "legacy-data-cruncher"
app_module: "legacy.interfaces.tasks.cruncher"
conf_dir: "/opt/local/etc/celery"
celery_bin: "/opt/local/python-virtualenvs/python2.5/bin/celery"
您还可以查看 test
目录下的 playbook 以获取更多示例。
许可证
GPLv2
作者信息
版权所有 © 2017, Nicolas CANIART。