我在Rails 3中使用Sidekiq,下面的worker类是这样的:
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仍然是新手,请阅读文档。我遗漏了什么?
发布于 2014-01-03 01:07:40
真奇怪。除了使用self.class而不是BotWorker之外,我也做了同样的事情,而且它起作用了。不过,我的perform方法没有任何参数。
您可能希望将方法包装在begin/re/ ensure块中,并将重新队列移动到“确保”块中。
如果User.find找不到用户,它将引发一个错误,Sidekiq将捕获该错误,并应将作业移动到重试队列中。可能不是你想要的。
https://stackoverflow.com/questions/20894740
复制相似问题