Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

199
Views
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.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

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

over 4 years ago · Santiago Trujillo Report

0

Si está construyendo 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) }
over 4 years ago · Santiago Trujillo Report

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

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!