重新启动rake后台任务rails 4

时间:2015-02-27 11:40:45

标签: ruby-on-rails ruby rake-task background-task

我在rails 4应用程序中有一个rake任务,它从我的控制器调用并在后台运行,如下所示:

system "rake fetch_news SOURCE=#{src} CATS=#{cat} C_ID=#{c_id} S_ID=#{s_id} FEED_ID=#{f_id} &"

它在后台运行完美,是否有工作,但我需要在1.5-2分钟的延迟后再次使用相同的参数启动。

非正式地,我认为这样:

desc "Fetch news for specific category"
task :fetch_news => :environment do
    ... code of my background task ...
   sleep 120
   << insert here some code to restart the task >>
end

但我不知道如何实现这个:(。最初我以为我可以在我的任务中定义一个函数,调用函数,睡眠,再次调用它,但任务不允许将函数定义为。

我在Google上搜索了解决方案,但我找不到任何可以帮助我的方法。你能给我一个想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

而不是rake任务,你应该使用:

  • CRON - 如果参数是固定的。如果您想简化CRON的工作,请查看whenever
  • Sidekiq - 如果您想在运行时更改参数。 Sidekiq能够定义recurring jobs