首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sidekiq调度同一工人在完成时排队

Sidekiq调度同一工人在完成时排队
EN

Stack Overflow用户
提问于 2014-01-03 01:01:24
回答 1查看 2.4K关注 0票数 4

我在Rails 3中使用Sidekiq,下面的worker类是这样的:

代码语言:javascript
复制
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

我的控制器

代码语言:javascript
复制
BotWorker.perform_async(user_id)

然而,在Sidekiq仪表板上,似乎没有安排其他工人。

还想注意的是,递归是有条件的,所以看起来我不可能使用sidetiq或什么sidekiq调度扩展。

Sidekiq仍然是新手,请阅读文档。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 01:07:40

真奇怪。除了使用self.class而不是BotWorker之外,我也做了同样的事情,而且它起作用了。不过,我的perform方法没有任何参数。

您可能希望将方法包装在begin/re/ ensure块中,并将重新队列移动到“确保”块中。

如果User.find找不到用户,它将引发一个错误,Sidekiq将捕获该错误,并应将作业移动到重试队列中。可能不是你想要的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20894740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档