如何防止极端情况或延迟计划任务的期限?

假设我安排了一个将来与start_dateend_date(含),timezonestatus进行的活动。由于用户来自具有不同时区的所有地点,因此日期是墙上时间。将会有传入的事务,我想根据任务的状态检查这些事务的有效性。

如果任务的状态为active,则该任务仍然有效。我打算做的是设置一个cron作业(或Rails中的activeJob)以每15分钟运行一次,以根据用户的timezone设置检查任务是否已经开始或结束,并更新{{1 }}字段。

问题是,假设任务的status是12月15日,并且cron作业恰好在12月16日00:00开始,此时任务应该已经过期,并且cron作业大约需要2分钟才能完成整个任务数据库。然后end_date将在12月00:02左右的16更新为status。如果在12月16日00:01发生事务,则应用程序将根据其inactive(仍为status)的有效性进行检查,但实际上已经超过了截止日期。

有什么办法解决这个问题吗?

顺便说一句,尽管应用程序本身并不很严重,并且可能会出现一些不匹配的情况,但我仍然担心查询时的数据完整性,因为某些数据点会超出有效日期范围。

seasun19880923 回答:如何防止极端情况或延迟计划任务的期限?

Cron无法正常工作,因为它会产生您描述的问题,但是通过activejob,您可以告诉它运行https://edgeguides.rubyonrails.org/active_job_basics.html#enqueue-the-job的确切日期和时间

顺便说一句,如果某些东西取决于日期,为什么不真正检查那个日期而不是“状态”列呢?

本文链接:https://www.f2er.com/3151929.html

大家都在问