Получите Mutex в Express JS API (NodeJS) - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь получить мьютекс в NodeJS коде в API.

Мой API: /compute-something-big

имеет проблему из-за того, что критический раздел (вычисление) не является ' Необходимо вызвать t, если вычисление уже выполняется. Мне нужно что-то, что удовлетворяет вышеуказанному условию. Блокировка базы данных (некоторый флаг в БД), вероятно, недостаточна, так как это не гарантирует, вероятно, почти то же самое.

Так что https://github.com/thedeveloper/warlock не подходит.

Я не уверен на 100% насчет https://github.com/npm/lockfile Так как даже блокировка файлов может работать не совсем (не уверен). Кроме того, я не могу использовать его с моим асин c кодом.

lockfile.lock("mutex.lock", async err => {
      await theBigComputation();

      if (err) {
        throw err;
      }
      lockfile.unlock("mutex.lock", err => {
        throw err;
      });
});

Вышеприведенное завершается до того, как будет выполнено даже полное вычисление. Так что не уверен насчет текущего исправления тоже. Любые намеки.

...