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

151
Vistas
¿Cómo hacer una parada elegante para el servidor koajs?

Hay muchos ejemplos de parada elegante para expressjs, ¿cómo puedo lograr lo mismo para koajs?

También me gustaría desconectar las conexiones de la base de datos.

Tengo una conexión de base de datos mongoose y 2 conexiones Oracle db ( https://github.com/oracle/node-oracledb )

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

0

Creé un paquete npm http-graceful-shutdown ( https://github.com/sebhildebrandt/http-graceful-shutdown ) hace algún tiempo. Esto funciona perfectamente con http , express y koa . Como desea agregar también sus propias cosas de limpieza, modifiqué el paquete, de modo que ahora puede agregar su propia función de limpieza, que se llamará al apagar. Entonces, básicamente, este paquete maneja todas las cosas de apagado de http además de llamar a su función de limpieza (si se proporciona en las opciones):

 const koa = require('koa'); const gracefulShutdown = require('http-graceful-shutdown'); const app = new koa(); ... server = app.listen(...); // app can be an express OR koa app ... // your personal cleanup function - this one takes one second to complete function cleanup() { return new Promise((resolve) => { console.log('... in cleanup') setTimeout(function() { console.log('... cleanup finished'); resolve(); }, 1000) }); } // this enables the graceful shutdown with advanced options gracefulShutdown(server, { signals: 'SIGINT SIGTERM', timeout: 30000, development: false, onShutdown: cleanup, finally: function() { console.log('Server gracefulls shutted down.....') } } );
about 4 years ago · Santiago Trujillo Denunciar

0

He respondido una variación de "cómo terminar un servidor HTTP" muchas veces en diferentes canales de soporte de node.js. Desafortunadamente, no podría recomendar ninguna de las bibliotecas existentes porque faltan de una forma u otra. Desde entonces, armé un paquete que (creo) está manejando todos los casos que se esperan de una terminación elegante del servidor HTTP.

https://github.com/gajus/http-terminator

El principal beneficio de http-terminator es que:

  • no parchea la API de Node.js
  • inmediatamente destruye todos los sockets sin una solicitud HTTP adjunta
  • permite un tiempo de espera elegante para los sockets con solicitudes HTTP en curso
  • maneja correctamente las conexiones HTTPS
  • informa a las conexiones que usan keep-alive que el servidor se está cerrando configurando una conexión: cerrar encabezado
  • no termina el proceso de Node.js

Uso con Koa:

 import Koa from 'koa'; import { createHttpTerminator, } from 'http-terminator'; const app = new Koa(); const server = app.listen(); const httpTerminator = createHttpTerminator({ server, }); await httpTerminator.terminate();
about 4 years ago · Santiago Trujillo Denunciar

0

Para asegurarse de que las conexiones de Oracle DB estén bien cerradas, puede usar un grupo de conexiones y llamar a pool.close() con un tiempo de drainTime de 0 o mayor. Esto permitirá que la aplicación interrumpa de manera relativamente limpia cualquier operación que esté usando una conexión actualmente. Permite liberar el extremo de la base de datos de las conexiones sin que la base de datos espere a que expire el período de tiempo de espera antes de que se limpie. Incluso con dos conexiones, esta es una solución que consideraría, ya que no importa que el grupo sea pequeño. Es posible que también deba configurar la detección de interrupciones fuera de banda de Oracle Net; consulte Conexiones y alta disponibilidad .

about 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