Почему в node.js нет библиотеки для отслеживания ожидающих запросов? - PullRequest
0 голосов
/ 04 ноября 2018

Я вижу тонну онлайн-документации о постепенном завершении работы (с этим почти все рабочие приложения должны сталкиваться, чтобы избежать неудачных запросов 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];
  });
}

Почему больше нет документации по этому вопросу? Это заставляет меня чувствовать, что я делаю что-то не так. Есть ли где-нибудь более распространенное + хорошо протестированное + хорошо продуманное промежуточное ПО или библиотека? Как это обрабатывается в других приложениях?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...