Estoy trabajando en una aplicación node+express y quiero prepararla para hacer una elegante. El objetivo es hacer despliegues de la manera "correcta", es decir:
Para el apagado correcto, estoy usando un código similar a:
var express = require('express'); var app = express(); var server = app.listen(1337); process.on( 'SIGTERM', function () { server.close(function () { console.log( "Closed out remaining connections."); // Close db connections, etc. // // How to ensure no tasks is running in the thread pool ??? }); setTimeout( function () { console.error("Could not close connections in time, forcefully shutting down"); process.exit(1); }, 30*1000); }); Mi duda es saber si dentro de server.close() ¿puedo estar seguro de que no hay ninguna tarea en ejecución o pendiente de ejecución?
¿Qué sucede si un trabajo en el ciclo de eventos comenzó a leer un archivo grande de forma asíncrona y está trabajando en el grupo de subprocesos? ¿ server.close también garantiza que no se ejecutan tareas en el grupo de subprocesos?