Procesos asíncronos y tareas programadas
Histrix resuelve el trabajo que no puede correr dentro del request por dos vías distintas: un worker de Gearman para trabajos disparados por el usuario, y un planificador propio para tareas recurrentes.
Worker de Gearman
Sección titulada «Worker de Gearman»El motor encola en Gearman dos tipos de trabajo:
| Trabajo | Origen |
|---|---|
processContainer |
Grabación de un contenedor en segundo plano |
send_email |
Envío de correo |
Los trabajos se encolan con doBackground contra el servidor local, de modo que el
request devuelve la respuesta sin esperar a que terminen.
Instalación
Sección titulada «Instalación»sudo apt-get install gearman php-gearmanServicio
Sección titulada «Servicio»El worker es cgi-bin/gearman_worker.php y se ejecuta como servicio de systemd. La
unidad viene incluida en la instalación:
sudo cp /usr/share/histrix/cgi-bin/histrix_worker.service /etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl enable histrix_worker.servicesudo systemctl start histrix_worker.serviceVerificación:
systemctl status histrix_worker.serviceEl servicio está configurado con Restart=always, así que se levanta de nuevo si el
worker termina.
Planificador de tareas
Sección titulada «Planificador de tareas»Las tareas recurrentes de cada base se definen en la tabla HTX_CRONTAB y se
administran desde la interfaz o por API (/api/db/{db}/crontab/). Cada fila tiene una
expresión cron estándar, el comando a ejecutar y el usuario con cuya sesión debe
correr.
El planificador evalúa qué tareas corresponden en el momento de la invocación y las ejecuta:
php histrix scheduler {base}Ese comando es el que se engancha al cron del sistema, una vez por base:
* * * * * cd /usr/share/histrix && php histrix scheduler cliente >> /var/log/histrix-cron.log 2>&1Cada tarea se ejecuta con la sesión del usuario declarado en la fila, de modo que los permisos y los datos de contexto sean los de ese usuario y no los del proceso del cron.