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_nameapp_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。

关于项目

Setup celery workers managed by systemd

安装
ansible-galaxy install cans.celery-worker-setup
许可证
gpl-2.0
下载
147
拥有者