Я вижу тонну онлайн-документации о постепенном завершении работы (с этим почти все рабочие приложения должны сталкиваться, чтобы избежать неудачных запросов API)
У меня есть это для настройки сервера:
var pendingRequests = {};
function initServer() {
var app = express();
var server = http.createServer(app);
server.listen(global.port, function() {
logger.info('Listening on port ' + global.port);
process.on('SIGINT', function() {
server.close(function() {
logger.info('Server shut down on port ' + global.port);
var drainCheck = setInterval(function() {
if (Object.keys(pendingRequests).length === 0) {
clearInterval(drainCheck);
process.exit(0);
}
}, 100);
});
});
});
}
и у меня есть это для регистрации ожидающих запросов:
function initRoute(app, method, path, fn) {
app[method](path, async function(req, resp) {
var requestId = uuid.v4();
var start = now();
pendingRequests[requestId] = true;
try {
var res = await fn(req, resp);
resp.send(utilitiesModule.snakeToCamel(res));
var end = now();
logger.info({
method: method,
path: path,
time: end - start
});
} catch (err) {
var end = now();
logger.error({
error: err.stack,
method: method,
path: path,
time: end - start
});
resp.status(500).send({
'error': err.message,
'stack': err.stack
});
}
delete pendingRequests[requestId];
});
}
Почему больше нет документации по этому вопросу? Это заставляет меня чувствовать, что я делаю что-то не так. Есть ли где-нибудь более распространенное + хорошо протестированное + хорошо продуманное промежуточное ПО или библиотека? Как это обрабатывается в других приложениях?