Предотвращение двойного выполнения кода из функций, активированных HTTP и таймером - PullRequest
0 голосов
/ 14 июля 2020

У меня есть функция, которая каждые 5 минут проверяет, есть ли в моей базе данных какие-либо записи, которые необходимо обработать. В этой таблице у меня есть атрибут «Ishandled», чтобы отслеживать, какие записи уже были обработаны.

Теперь у меня есть вторая функция, которая запускается через HTTP. Эти функции позволяют мне немедленно обрабатывать определенную запись из базы данных, передавая идентификатор записи.

Мой вопрос. Если я активирую свою вторую функцию одновременно с активацией 5-минутного таймера, возможно ли, чтобы эта конкретная запись c была обработана дважды? Если да, то как этого можно избежать? Я думал о том, чтобы запустить веб-задание в единственном экземпляре и использовать блокировку для обеих функций, но по опыту знаю, что блокировки не совсем эффективны.

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 16 июля 2020

Да, похоже, ваш триггер таймера и триггер http пытаются что-то сделать с записями в базе данных. Таким образом, у вас может быть logi c в вашем http-триггере для проверки атрибута Ishandled, только когда запись не была обработана, вы получаете в logi c для обработки записи.

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