繁体   English   中英

每隔几秒运行一次后台作业

[英]Run a background job every few seconds

假设我有一个需要从API中提取数据的应用程序,但是我发送查询的频率是有限的(即,X请求/分钟上限)。 为了确保我没有达到这个限制,我想将请求添加到队列,并有一个后台作业,它将拉动X请求并每分钟执行一次。 但是,我不确定Rails中最好的方法是什么。 从我收集的内容来看,DelayedJob是满足我需求的更好的库,但我没有看到任何支持只运行X作业一分钟。 有谁知道是否有一种实现这样的功能的首选方式?

我有点迟了但是我想警告你不要在你的情况下使用whenever宝石:因为你正在使用Ruby on Rails,每次使用时,gem都会在cron中调用它时加载环境。

尝试使用rufus-scheduler

例如,将代码放在config/initializers/cron_stuff.rb

require 'rufus/scheduler'

scheduler = Rufus::Scheduler.start_new

scheduler.every '20m' do
  puts 'hello'
end

首先,我建议使用Sidekiq处理后台作业。 它支持得很好,使用起来非常简单。 如果您确实使用Sidekiq,那么还有另一个名为Sidetiq的 gem,它允许您运行定期作业。

也许你可以尝试[随时]: https//github.com/javan/whenever

然后您可以添加以下任务:

every 3.hours do
  runner "MyModel.some_process"
  rake "my:rake:task"
  command "/usr/bin/my_great_command"
end

在schedule.rb文件中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM