0

我无法弄清楚 sidekiq 发生了什么。我本可以发誓昨天这行得通,但我一定是在做梦。

这是我的工人阶级:

class TagPostWorker
  include Sidekiq::Worker
  sidekiq_options queue: "tag"
  sidekiq_options retry: false

  def perform(options = {})
      current_user = User.find(options[:user_id])
  end

end

我尝试在 Post 中的 show 方法上运行此命令:

TagPostWorker.perform_async({:user_id => current_user.id})

但我得到这个错误:

2013-08-17T22:45:45Z 4029 TID-ors6jfr54 TagPostWorker JID-ae203958bb3bcee01c8f83ef INFO: start
2013-08-17T22:45:45Z 4029 TID-ors6jfr54 TagPostWorker JID-ae203958bb3bcee01c8f83ef INFO: fail: 0.003 sec
2013-08-17T22:45:45Z 4029 TID-ors6jfr54 WARN: {"retry"=>false, "queue"=>"tag", "class"=>"TagPostWorker", "args"=>[{"user_id"=>7}], "jid"=>"ae203958bb3bcee01c8f83ef", "enqueued_at"=>1376779545.9099338}
2013-08-17T22:45:45Z 4029 TID-ors6jfr54 WARN: Couldn't find Post without an ID

我不明白 sidekiq 是如何尝试发布的,因为我什至没有在 perform 方法中调用它。任何想法可能会发生什么?

任何帮助表示赞赏。

4

2 回答 2

1

您可能想看看这篇博文。

这听起来很荒谬,但 Sidekiq 速度如此之快,它甚至可以在你的模型完成保存之前运行你的工作程序。

于 2013-08-18T09:37:29.803 回答
0

同样奇怪的是,我可以发誓我重新启动了 Rails/sidekiq。

但是我将worker重命名为TagWorker,重新启动Rails/sidekiq,它又开始工作了!

于 2013-08-17T23:04:38.547 回答