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

标签 ruby scheduled-tasks background-process

在 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/

相关文章:

ruby-on-rails - Ruby on Rails/Paperclip Gem : Does not resize images, 似乎只保存 'original' 图像

ios - AVPlayer 不在后台加载媒体

ios - 在后台运行应用程序的 Cycript 脚本

linux - 高级计划进程/任务管理器 - Linux

ios - 如何安排无需用户干预即可唤醒 iOS 应用程序的警报

ruby - 在 Sinatra 中,你如何制作一个 "before"过滤器来匹配除某些路由之外的所有路由

ruby 1.9.2 运行 cucumber 规范时出现奇怪的警告

ruby-on-rails - 如何在大型 JSON 数组中搜索并通过多个键查找记录

php - CakePHP 上的计划任务

coldfusion - 从 ColdFusion 9 升级到 10 后如何修复计划任务