Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

777
Vistas
Procesos en segundo plano en Node.js

¿Cuál es un buen enfoque para manejar procesos en segundo plano en una aplicación NodeJS?

Escenario : después de que un usuario publica algo en una aplicación, quiero analizar los datos, solicitar datos adicionales de recursos externos, etc. Todo esto requiere bastante tiempo, por lo que lo quiero fuera del ciclo req/res. Lo ideal sería tener una cola de trabajos en la que pueda volcar rápidamente un trabajo y un demonio o ejecutor de tareas siempre tomará el más antiguo y lo procesará.

En RoR lo habría hecho con algo como Delayed Job. ¿Cuál es el equivalente de nodo de esta API?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si desea algo liviano, que se ejecute en el mismo proceso que el servidor, le recomiendo Bull . Tiene una API simple que permite un control detallado de sus colas.

Si está buscando algo que se ejecute como un proceso de trabajo independiente, tal vez busque en Kue . Puede ejecutarse como un servidor API RESTful e incluso tiene varias aplicaciones de front-end escritas para él.

Si está familiarizado con Ruby's Resque, hay una implementación de nodo llamada Node-resque

Bull, Kue y Node-resque están respaldados por Redis , que es omnipresente entre las colas de trabajadores de Node.js. Los 3 podrían hacer lo que hace DelayedJob de RoR, se trata de las características específicas que desea y sus preferencias de API.

over 4 years ago · Santiago Trujillo Denunciar

0

Los trabajos en segundo plano no están directamente relacionados con el trabajo de su servicio web, por lo que no deberían estar en el mismo proceso. A medida que aumenta la escala, el uso de memoria de los trabajos en segundo plano afectará el rendimiento del servicio web. Pero puede ponerlos en el mismo repositorio de código si lo desea, lo que tenga más sentido.

Una buena opción para enviar mensajes entre los dos procesos sería redis , si dejar caer un mensaje de vez en cuando está bien. Si desea que "ningún mensaje se quede atrás", necesitará un corredor más pesado como Rabbit . Su proceso de servicio web puede publicar y su proceso de trabajo en segundo plano puede suscribirse.

No es necesario que los dos procesos sean cohospedados, pueden estar en máquinas virtuales separadas, contenedores Docker, lo que sea que use. Esto le permite escalar horizontalmente sin muchos problemas.

over 4 years ago · Santiago Trujillo Denunciar

0

Si está utilizando MongoDB, le recomiendo Agenda . De esa manera, las instancias de Redis separadas no se ejecutan y las características como la programación, la cola y la interfaz de usuario web están todas presentes. Agenda UI es opcional y se puede ejecutar por separado, por supuesto.

También recomendaría configurar una abstracción débilmente acoplada entre la lógica de su aplicación y el sistema de cola/programación para que todo el sistema de procesamiento en segundo plano pueda intercambiarse si es necesario. En otras palabras, mantenga la mayor cantidad de lógica de aplicación/procesamiento alejada de las definiciones de trabajo de su Agenda para mantenerlas livianas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda