Sidekiq在完成后安排同一个工作人员排队
我使用Sidekiq和Rails 3,使用以下工人类:
class BotWorker include Sidekiq::Worker def perform(user_id) user = User.find(user_id) puts user.email if condition # always true for now BotWorker.perform_in(1.hour, user_id) # not working end end end
我的控制器只是
BotWorker.perform_async(user_id)
但是,在Sidekiq仪表板上,似乎并没有安排另一名工人。
还要注意,重复是有条件的,因此我似乎不能使用sidetiq或一些sidekiq调度扩展。
Sidekiq还是新手,请阅读文档。 我错过了什么?
奇怪。 我做同样的事情,除了使用self.class
而不是BotWorker
,它的工作原理。 虽然我的perform
方法没有任何参数。
您可能希望将方法包装在begin / rescue / ensure块中,并将重新排队移动到ensure块中。
如果User.find
无法找到用户,它将引发Sidekiq将捕获的错误,并应将您的作业移动到重试队列中。 可能不是你想要的。