Блокировка одновременных крон с базой данных postgres - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь добиться того, чтобы несколько экземпляров одного и того же приложения работали одновременно, но только один из них запускал cron, заблокировав его в базе данных Postgres.

Мое решение до сих пор:

  • Запуск cron во всех экземплярах.
  • Вставка строки в таблицу cron_lock с уникальным идентификатором для cron.
  • Если у меня возникла ошибка при выполнении запроса на вставку, это, скорее всего, связано с тем, что строка уже существует (идентификатор cron является первичным ключом таблицы). Если это так, я ничего не делаю и выхожу.
  • Если при выполнении запроса на вставку у меня не возникнет ошибка, то экземпляр приложения запустит процесс cron.
  • В конце моего процесса я удаляю строку с уникальным идентификатором.

Это решение работает, но я не уверен, существует ли другой механизм блокировки с Postgres, в частности тот, который не будет выполнять запросы, которые создают ошибки.

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