【问题标题】:how do you clear jobs from ActiveJob queue?你如何从 ActiveJob 队列中清除作业?
【发布时间】:2018-12-07 23:38:06
【问题描述】:

我有一份执行状态更改的工作,而我使用它的方式是,状态仅在经过一定时间后才会更改。

在我的工作课上:

class ItemJob < ApplicationJob
 queue_as :default

 def perform(item)
  item.do_this!
 end
end

它是从模型中调用的:

def create_item_worker
 ItemJob.set(wait: 30.seconds).perform_later(self)
end

但这不起作用,因为 ActiveJob 有一个作业队列,用于记录不再存在的记录。我在终端中输入bundle exec sidekiq,它会吐出像ActiveJob::DeserializationError: Error while trying to deserialize arguments: Couldn't find Item with 'id'=67 这样的废话。

那我该如何清除呢? Sidekiq::Queue.all.each(&amp;:clear) 似乎什么也没做。

【问题讨论】:

    标签: ruby-on-rails sidekiq rails-activejob


    【解决方案1】:

    您的作业因失败而不再排队,它正在重试集中等待稍后重新排队。你想要Sidekiq::RetrySet.new.clear

    请阅读 API 和错误处理 wiki 页面以了解更多信息。

    https://github.com/mperham/sidekiq/wiki/API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-08
      • 2020-04-30
      • 2020-09-27
      • 2018-05-04
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多