根据对象数量均匀动态调度后台作业

时间:2014-01-20 14:32:45

标签: ruby scheduled-tasks background-process

在Sinatra应用程序中,我需要每天为应用程序的每个用户运行后台工作(我可能会使用sidekiq)。

我想根据用户数量在白天均匀分发它们。因此,例如,如果有12个用户,则必须每两个小时执行一次作业,如果有240个用户,则必须每6分钟执行一次作业。

我知道有一些宝石可以让你安排后台工作(Rufus调度程序,每当...),但是我不确定他们是否允许更改内部工作必须根据动态值执行,例如集合中的对象数量。

知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

使用whenever,你可以这样开始:

在您的用户模型中,成功添加用户后:

every (1440/User.all.count).to_i.minutes do
  add your background command task
end

另外不要忘记更新实际更新cron的商店。

system 'bundle exec whenever --update-crontab store'