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将捕获的错误,并应将您的作业移动到重试队列中。 可能不是你想要的。