G3/3w/3.10.0/DocTecnica/Instalacion/ConfigEnvioEmailsBackground

Envió de emails en Background

Si vamos a la operación de envió de emails en G3W3 (3.10+) veremos que los mismos se envían en "background", es decir, el usuario al hacer click en el botón enviar no se debe quedar esperando hasta que se terminan de enviar todos los emails. Esto es así gracias al uso de las tareas en background, para dicho propósito se decidió usar la siguiente librería DJJob  https://github.com/seatgeek/djjob.

Funcionamiento

Encolado de procesos

Lo que realiza dicha librería es por cada email a enviar crea un proceso, el cual es encolado (guardado) en una tabla de la base de datos (la tabla es llamada jobs), dicho proceso no es nada mas que un objeto PHP serializado el cual debe implementar el método perform(), la tabla en la que se guarda el proceso pertenece a la base de datos actual (bloque de acceso activo).

Desencolado de procesos

Hasta este punto tenemos uno o varios objetos PHP serializados en la base de datos, pero el/los emails no fueron todavía enviados a sus destinatarios, para ello se ejecuta un worker que lo que realiza es desencolar los procesos (objetos serializados) de la base de datos, recorre y deserializa uno por uno, y ejecuta el método perfom() de cada objeto mail (el cual internamente hace un send() del email).

Ejecución a través de un cron

La operación de envió de mensajes utiliza un cron o tarea programado el cual es un programa del sistema operativo que cada cierto tiempo o a una hora determinada (puede ser cada 10 minutos o todos los días a las 18hs, etc.) ejecuta el worker y envía los emails para todos los bloques de acceso de la aplicación (desencola y envia los emails de todas las unidades académicas).

Configuración de cron o tarea programada para el envío de emails