Предположим, в будущем у меня запланировано событие с start_date
, end_date
(включительно), timezone
и status
. Даты настенные, так как пользователи из разных мест с разными часовыми поясами. Будут входящие транзакции, и я хотел бы проверить правильность этих транзакций по статусу задачи.
Если задание имеет статус active
, то оно все еще действует. Я планирую настроить задание cron (или ActiveJob в Rails), которое будет запускаться каждые 15 минут, чтобы проверить, была ли задача уже запущена или завершена в соответствии с настройкой timezone
пользователя, и обновить поле status
.
Проблема состоит в том, что предположим, что для задания end_date
задано 15 декабря, а задание cron начинается ровно в 16 декабря 00:00, когда задание должно быть уже истекло, а заданию cron требуется приблизительно 2 минуты для завершения задания. вся база данных. Затем status
будет обновлен до inactive
в 16 декабря 00:02. Если в 16 декабря 00:01 происходит транзакция, а затем приложение проверяет действительность по номеру status
, который все еще равен active
, но фактически он уже истек крайний срок.
Есть какие-нибудь идеи, как бороться с этой проблемой?
Кстати, хотя само приложение не очень серьезное и может допускать некоторые несоответствия, я все еще беспокоюсь о несоответствии данных при запросах, так какв допустимом диапазоне дат будут отсутствовать некоторые точки данных.