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

186
Views
El servidor Node Express finaliza ocho horas después de la inactividad

He escrito una pequeña aplicación de back-end con Node Express. Su propósito es recuperar datos de una base de datos MySQL y enviar las filas resultantes como una cadena con formato JSON al cliente solicitante.

 app.get(`${baseUrl}/data`, (req, res) => { console.log("Get data"); getDataFromDatabase((error, data) => { if (error) { return res.json({status: CODE_ERROR, content: error}); } else { return res.json({status: CODE_SUCCESS, content: data}); } }); });

Dentro del método getDataFromDatabase() , se envía una declaración SELECT simple a la base de datos y recibe un código de estado más contenido. En caso de éxito, el contenido sería un JSON de filas devueltas, de lo contrario, información sobre el error de MySQL, nuevamente en formato JSON.

Básicamente, este código funciona bien. Hay algunos otros métodos que se construyeron de la misma manera pero que no causan el siguiente problema: después de ejecutar este código en un servidor, descubrí que el proceso siempre muere exactamente ocho horas después de la última llamada del método anterior. El método se puede llamar docenas de veces, el problema ocurre solo después de la inactividad.

Una solución rápida y sucia debido a la falta de tiempo fue simplemente crear un cronjob que elimina el proceso y volver a ejecutar la aplicación cada seis horas. Sin embargo, el nuevo proceso también se cancela ocho horas después de que se haya enviado la última solicitud en el último proceso.

Mientras escribía esta pregunta, revisé nuevamente si había diferencias entre mis métodos. Encontré lo siguiente, aquí un fragmento de getDataFromDatabase() :

 if (error) { callback(error, null); }

Sin embargo, un método getOtherDataFromDatabase() tiene una palabra clave de return antes de su devolución de llamada:

 if(!error) { return callback(null, data); }

Entonces, ¿la palabra clave de return hace una diferencia aquí? ¿Hay algún tipo de código asincrónico sin terminar que finaliza después de un tiempo de espera? No tengo excepciones en la salida de mi consola, el proceso muere en silencio.

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