Я пытаюсь получить мьютекс в 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;
});
});
Вышеприведенное завершается до того, как будет выполнено даже полное вычисление. Так что не уверен насчет текущего исправления тоже. Любые намеки.