在 Sinatra 应用程序中,我需要每天为应用程序的每个用户在后台运行一个作业(我可能会为此使用 sidekiq)。
我想在一天中根据用户数量平均分配它们。因此,例如,如果有 12 个用户,则作业必须每两小时执行一次;如果有 240 个用户,则作业必须每 6 分钟执行一次。
我知道有一些 gem 允许您安排后台作业(Rufus scheduler,Whenever ...),但是我不确定它们是否允许更改内部作业必须根据动态值执行,例如集合中的对象数。
知道如何实现吗?
最佳答案
使用 whenever ,你可以这样开始:
在您的用户模型中,成功添加用户后:
every (1440/User.all.count).to_i.minutes do
add your background command task
end
另外不要忘记更新实际更新 cron 的 whenever 存储。
system 'bundle exec whenever --update-crontab store'
关于ruby - 根据对象数量动态均匀调度后台作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236608/