es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puede el programador de trabajos de Hangfire realizar esto?

Estoy evaluando Hangfire para un próximo proyecto de ASP.net Core que tiene varias tareas programadas y recurrentes que deben ejecutarse de forma independiente a los usuarios haciendo clic en las páginas web. Sé que HangFire puede hacer esto si la aplicación web se inicia porque se ha recibido una solicitud. Necesito saber si HangFire puede ejecutar una tarea programada entre reinicios y la llegada de la primera solicitud web.

Ejemplo: El servidor web se reinicia a las 11pm y no llegarán solicitudes web para hacer que el servidor web se inicie hasta las 5am de la mañana siguiente. Se necesita realizar una tarea programada a la 1AM. ¿Hangfire ejecutará esta tarea aunque la aplicación web no haya sido iniciada por una solicitud entrante?

Si es posible, ¿hay alguna configuración especial que deba hacer para permitir esto?

Detalles, si es necesario:
Vamos a utilizar Kestrel alojado en un servicio de Windows y situado detrás de un proxy inverso NGINX. Esta configuración podría modificarse si es necesario para que HangFire cumpla con este requisito.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, Hangfire puede ejecutar una tarea programada incluso si la aplicación web no ha sido iniciada por una solicitud entrante. Hangfire tiene un BackgroundJobServer que se ejecuta continuamente y procesa tareas programadas y recurrentes. Por lo tanto, puede ejecutar tareas incluso durante períodos de inactividad como reinicios del servidor o períodos de mantenimiento.

    Para asegurarse de que Hangfire siga funcionando en este escenario, puede crear un Servicio de Windows que aloje su aplicación ASP.net Core y ejecute el BackgroundJobServer de Hangfire. De esta manera, el BackgroundJobServer se iniciará y seguirá funcionando incluso si la aplicación web no está recibiendo ninguna solicitud de los usuarios. Además, puede configurar Hangfire para que utilice un almacenamiento persistente para almacenar la cola de trabajos y la información de estado, asegurando que los trabajos programados no se pierdan durante los períodos de inactividad.

    Un detalle a tener en cuenta es que si Hangfire está alojado dentro de un servidor web IIS, es posible que no se inicie hasta que se reciba la primera solicitud. En este caso, puede ser necesario configurar IIS para que inicie automáticamente el servidor de Hangfire al iniciar. Sin embargo, dado que estás utilizando Kestrel alojado en un Servicio de Windows, esto no es una preocupación.

    En general, Hangfire es una excelente opción para ejecutar tareas programadas y recurrentes de forma independiente de las acciones del usuario. Con la configuración adecuada, puede proporcionar una ejecución confiable incluso durante los períodos de inactividad del servidor.

Comments are closed.