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.
ansible-galaxy install cans.celery-worker-setup