【问题标题】:Active Job : How to check if same job has already been scheduled活动作业:如何检查是否已经安排了相同的作业
【发布时间】:2020-06-05 19:09:02
【问题描述】:

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

如何在执行工作之前检查这一点?

【问题讨论】:

  • 你检查过https://github.com/resque/resque-loner吗?
  • 是的,但它不再更新且无法正常工作

标签: ruby-on-rails rails-activejob


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你试过https://github.com/neighborland/resque_solo吗?它声称是对曾经或多或少的官方重新定位者的重写。

    或者,您可以随时考虑切换到 Sidekiq,它在其付费企业版 (https://github.com/mperham/sidekiq/wiki/Ent-Unique-Jobs) 以及单独的(非官方)gem (https://github.com/mhenrixon/sidekiq-unique-jobs) 中为独特的工作提供官方支持。

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 2019-01-07
      • 2015-04-18
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多