活动作业:如何检查是否已经安排了相同的作业

Active Job : How to check if same job has already been scheduled

我正在使用 Rails Active Job with Resque 并且我不想安排两次相同的作业(相同的参数)。作业由用户触发。

如何在执行作业前进行检查?

你试过https://github.com/neighborland/resque_solo了吗?它声称是对曾经或多或少的官方resque-loner的重写。

或者,您始终可以考虑切换到 Sidekiq,它在其付费企业版 (https://github.com/mperham/sidekiq/wiki/Ent-Unique-Jobs) as well as a separate (unofficial) gem (https://github.com/mhenrixon/sidekiq-unique-jobs) 中正式支持独特的工作。

这可能不是超级简单的原因 - 值得使作业幂等,以便它们可以 运行 多次。如果作业失败或重新启动,它可能会再次 运行ning 结束。

https://github.com/mperham/sidekiq/wiki/Best-Practices#2-make-your-job-idempotent-and-transactional(我更习惯sidekiq而不是resque,但是原理是一样的)

一种更好的结构化方式可能是让作业在数据库中的某个位置存储一个值,然后让作业读取该值并确定它是应该执行操作还是提前退出。