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

183
Vistas
ejecutar la siguiente solicitud una vez que se complete la ejecución de la primera solicitud en el nodo

Supongamos que tengo un punto final /print . Cada vez que se realiza una solicitud a este punto final, ejecuta una función printSomething() . Mientras se printSomething() , si el usuario u otro usuario llega a este punto final, se ejecutará printSomething() nuevamente. Si esto ocurre varias veces, el método se ejecutará varias veces en paralelo.

 app.get('/print', (req, res) => { printSomething(someArguments); res.send('processing receipts'); });

El problema con el comportamiento predeterminado es que, dentro de printSomething() , creo algunos archivos locales que son necesarios durante la ejecución de printSomething() y cuando se realiza otra llamada a printSomething() , anulará esos archivos, por lo tanto, ninguna de las llamadas devolver el resultado deseado.

Lo que quiero hacer es asegurarme de que se complete la ejecución de printSomething( printSomething() , antes de que se inicie otra ejecución de printSomething() . o para detener la ejecución actual de printSomething() una vez que se realiza una nueva solicitud al punto final.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Tiene diferentes opciones según lo que necesite, la cantidad de solicitudes que espera recibir y lo que hace con los archivos que está creando.

Solución 1

Si espera poco tráfico en este punto final

puede agregar una clave única a algunos someArguments según su requerimiento o generarlos aleatoriamente y crear los archivos que necesita en un directorio diferente

Solución 2

Si cree que causará algún problema de rendimiento, debe crear algún tipo de cola y trabajador para manejar las tareas.

De esta manera, puede manejar cuántas tareas se pueden ejecutar simultáneamente

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si está creando un sistema REST con llamadas distribuidas, esto suena problemático. Por lo general, no desea que una solicitud bloquee otra. Si el orden de operación es crucial (FIFO), entonces parece un problema de cola de clasificación.

Hay muchas formas diferentes de implementar la cola, puede usar una matriz o algo así o implementar una clase única que extienda eventEmitter.

 const myQueue = new Q() const crypto = require('crypto'); const route = (req,res) => { const uniqeID =crypto.randomUUID() myQueue.once(uniqeID, (data) =>{ res.send(data) }) myQueue.process(uniqID, req.someDaTa) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Podría usar app.locals , como sugieren los documentos : Once set, the value of app.locals properties persist throughout the life of the application .

Necesitas usar req.app.locals , algo como

 req.app.locals.isPrinting = true; ---- //Then check it if (req.app.locals.isPrinting)

req.app.locals es la forma en que express lo ayuda a acceder a app.locals

about 4 years ago · Juan Pablo Isaza 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