Estoy en la fase de diseño de un proyecto donde el usuario final enviará una solicitud desde una página web que generará un trabajo procesado asincrónico de larga ejecución. ¿Existe una "mejor práctica" para este problema? ¿Son los servicios web y los corredores de servicios una buena manera de hacerlo? ¿La cola de mensajería de Microsoft es aplicable aquí?
web-development
async
John Ruf
fuente
fuente
Respuestas:
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.
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.fuente
Supongo que estás hablando de más de unos minutos.
Si son pocos minutos, puede iniciar un subproceso de trabajo en segundo plano y mostrar un cierto progreso en la interfaz de usuario. Muchas aplicaciones web usan ese método.
Si es más de, digamos 5 minutos, es posible que desee delegar la tarea a un servicio dedicado. Un ejemplo son los informes generados por Google Analytics.
La cola de mensajería de Microsoft se puede usar para transmitir información de un sistema a otro o de un componente a otro.
fuente