No sé sobre "mejores prácticas". Sé los errores más comunes.
Primer error: DOS usted mismo
Utiliza el controlador web para procesar el trabajo de larga ejecución. Esto puede ser malo o extremadamente malo dependiendo de su porcentaje de visitas que se conviertan en trabajos de larga duración, cuánto tiempo se ejecutan y cuánto tráfico sostenido obtiene.
Desea asegurarse de que no está obteniendo más de 1 trabajo de ejecución prolongada dentro del período de tiempo que lleva completar ese trabajo de ejecución prolongada. Si haces DOS tú mismo. También empeorará cuanto más tráfico obtenga suponiendo que el porcentaje y el tiempo se mantengan consistentes. Es uno de esos problemas que impone un límite al crecimiento del tráfico.
Segundo error: el engendro del webhandler
Generar un proceso desde el controlador web para manejar un proceso de larga ejecución puede ser complicado y, como resultado, también propenso a errores.
- Debe disociarse del padre correctamente; de lo contrario, el webhandler espera a que se complete el niño.
- Cuando se bifurca un hijo en Unix, hereda los identificadores abiertos del padre. Estos se cerrarán automáticamente a menos que se sobrescriban. Esto incluye cosas como conexiones de bases de datos, controladores de archivos, otras conexiones de red abiertas. Todo lo cual se cierra cuando se completa el proceso secundario.
Opciones
Por lo general, uso at(1)
para disociar limpiamente del controlador web sin bifurcación.
También puede usar una implementación de sondeo con cron
.
Puede comunicarse con otro proceso del servidor que maneja el procesamiento. Que la comunicación se puede hacer con sockets
, pipes
o mayores abstracciones de nivel como una llamada http RESTO o encaminar un mensaje cola.