cans.celery-worker-setup

celery-worker

Un rol para configurar un conjunto de trabajadores de Celery supervisados por systemd.

Cada trabajador debe ser descrito mediante elementos como el siguiente:

- app_name: 'MiAplicación'                # (obligatorio)
  app_variable: 'mi_aplicacion'           # (predeterminado: `celeryw_app_variable`)
  celeryd_bin: '/usr/local/bin/celery'    # (predeterminado: `celeryw_bin`)
  group: "adm"                             # (predeterminado: `celeryw_`)
  log_dir:                                 # (predeterminado: `celeryw_log_dir`)
  log_filename: "%n%I"                     # (predeterminado: `celeryw_log_filename`)
  log_level: "INFO"                        # (predeterminado: `celeryw_log_level`)
  pid_filename: `%n-master.pid`            # (predeterminado: `celeryw_pid_filename`)
  queues: `%n-master.pid`                  # (predeterminado: `celeryw_queues`)

Básicamente, todas las variables en la sección Variables del Rol a continuación pueden ser sobrescritas, por cada trabajador, en el elemento que describe el trabajador mediante una clave que tenga el mismo nombre (omitiendo el prefijo del espacio de nombres del rol). Las únicas dos excepciones son las variables app_name y app_module que debes proporcionar para cada trabajador que definas.

Requisitos

Este rol no tiene requisitos.

Variables del Rol

Todas las variables en este rol tienen el prefijo de espacio de nombres celeryw_.

Predeterminados

  • celeryw_app_variable: variable a nivel de módulo que mantiene una referencia a la aplicación de Celery (predeterminado: "app");
  • celeryw_bin: ruta al binario de Celery (predeterminado: "/usr/bin/celery")
  • celeryw_daemon_options: opciones adicionales que se pasarán tal cual en la línea de comandos de Celery (predeterminado: "");
  • celeryw_etc_dir: ruta al directorio donde se almacenan los archivos de configuración de los trabajadores de Celery (predeterminado: "/etc/celery");
  • celeryw_group: grupo bajo el cual deben ejecutarse los procesos de Celery (predeterminado: {{ansible_user_id}})
  • celeryw_log_dir: ruta al directorio donde se almacenan los archivos de registro de Celery (/var/log/celery);
  • celeryw_log_filename: nombre a utilizar para los archivos de registro. Consulta la documentación de Celery para saber más sobre las sustituciones de plantilla disponibles (predeterminado: %n%I.log);
  • celeryw_log_level: (predeterminado: ERROR)
  • celeryw_pid_filename: %n.pid
  • celeryw_queues: "celery"
  • celeryw_run_dir: ruta donde se almacenan los archivos PID de Celery, etc. (predeterminado: /var/run/celery)
  • celeryw_user: identidad bajo la cual deben ejecutarse los procesos de Celery (predeterminado: {{ansible_user_id}})
  • celeryw_workers: la variable que contiene la lista de trabajadores a configurar (predeterminado: []);

Variables destinadas a otros roles

Ninguna

Dependencias

Para que systemd gestione tus trabajadores de Celery, este rol depende del rol cans.systemd-unit-install.

Ejemplo de Playbook

Este primer ejemplo configurará trabajadores para dos aplicaciones, confiando principalmente en los valores predeterminados proporcionados en el rol:

- hosts: servidores
  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"

Este segundo ejemplo sobrescribe más variables, algunas a nivel global, en la sección vars del playbook, y otras a nivel de descripción del trabajador:

- hosts: servidores
  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"

También puedes consultar el playbook que se encuentra en el directorio test para más ejemplos.

Licencia

GPLv2

Información del Autor

Copyright © 2017, Nicolas CANIART.

Acerca del proyecto

Setup celery workers managed by systemd

Instalar
ansible-galaxy install cans.celery-worker-setup
Licencia
gpl-2.0
Descargas
147
Propietario