Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda