Saltar a contenido

Configurar un crontab en Histrix

En Histrix los crons no se configuran directamente en el crontab del sistema — primero se define el trabajo en la base de datos mediante un archivo XML, y luego el servidor ejecuta el cron de Histrix que se encarga de disparar lo que corresponde según el horario configurado.

1. Crear el archivo XML del crontab

Crear el xml que quieres que se ejecute. Tiene que ser procesa="true" para funcionar como cron. El archivo de ejemplo podria ser asi:

<?xml version="1.0" encoding="UTF-8" ?>
<histrix tipo="grid"  process="true" procesa="true" inserta="false">
  <title></title>
  <obs></obs>
  <form >
    <table id="STK_MUESTRAS">
      <movimientos>
        <relacion id="actualizar_fecha_upd.xml" />
    </movimientos>
      <field id="id_muestra"/>
      <field id="fecha_remito">
        <label>Fecha</label>
      </field>
      <field id="ahora">
        <label>Fecha Actual</label>
        <expression>CURDATE()</expression>
      </field>
      <field id="diferencia">
        <label>Diferencia</label>
        <expression>DATEDIFF(CURDATE(),fecha_remito)</expression>
         <condicion operador="&gt;=">62</condicion>

      </field>
      <field id= "estado">
        <condicion operador="=">0</condicion>
      </field>
    </table>
  </form>
</histrix>

2. Poner en base de datos el crontab

En la tabla HTX_CRONTAB de la base de datos de Histrix, agregar un nuevo registro con el nombre del archivo XML y la expresión cron con el intervalo deseado:

INSERT INTO HTX_CRONTAB (expression, user, command) 
VALUES ('0 0 * * *', 'histrix', 'actualiza_muestras.xml');

3. Configurar el cron en el servidor

El cron se configura en /etc/crontab (el del sistema, no el del usuario) para que corra con el usuario correcto. Editarlo con:

sudo nano /etc/crontab

El comando varía según si Histrix corre nativo o dockerizado.

Histrix nativo

*  *  *  *  *  www-data  /usr/share/histrix/histrix scheduler htx_cliente 1>/tmp/htx_cron.log 2>/tmp/htx_cron_error.log

Histrix por Docker

*  *  *  *  *  automata  docker exec histrix ./histrix scheduler nombre-cliente 1>/tmp/htx_cron.log 2>/tmp/htx_cron_error.log

Usuario en cada caso

En Histrix nativo el usuario es www-data porque es quien corre el proceso web. En Docker el usuario es automata, que es el que tiene permisos para ejecutar Docker en el servidor.

Verificar que quedó bien

    cat /etc/crontab