活跃的工作:如何检查同一工作是否已经被安排了

问题描述 投票:0回答:1

我正在使用Rails Active Job与Resque,我不想让同一个作业(相同的参数)调度两次。工作是由用户触发的。

如何在执行作业前检查这个问题?

ruby-on-rails rails-activejob
1个回答
2
投票

这很可能有一个原因,那就是这个问题并不超级简单--值得让作业成为幂等的,这样就可以多次运行。如果一个作业失败或重启,它最终可能会再次运行。

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

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


0
投票

你是否尝试过 https:/github.comneighborlandresque_solo。? 它自称是对曾经的官方查询器进行了重写。

另外,你也可以考虑改用Sidekiq,它的付费企业版中官方支持独特的工作(https:/github.commperhamsidekiqwikiEnt-Unique-Jobs。)以及一个单独的(非官方的)宝石(https:/github.commhenrixonsidekiq-unique-jobs。).

© www.soinside.com 2019 - 2024. All rights reserved.