Rails后台进程(Heroku Rails 3+)

我要为我的应用程序(Rails 3.2.3和Heroku)设置一些function。 这个想法是有一个任务或工作(或任何你想要调用它)每天运行,以确保来自外部API的用户信息是最新的用户信息在我的数据库。 我很好奇什么是设置这个最好的方法? 它应该是一个运行rake任务的cron作业吗?

似乎有很多方法可以做到这一点,我对其他人这样做的方式感兴趣。 我唯一能做的就是在cron工作中运行一个rake任务,但是很想知道最佳实践是什么,或者最简单的方法。 似乎有很多方法来剥皮这只猫…还有很多不同的工具。

如果有一个纯粹的导轨方式来做到这一点,我认为这将是更好的,所以我不必拧到我把我的应用程序放到每个系统。

对于每天运行一次的简单同步工作,我认为从长远来看,使用cronjob就足够了,而且可能更稳定。

老实说,像Resque和Sidekiq这样的解决方案在我看来有点矫枉过正(为了您的需要)。 您仍然需要使用调度程序将消息发送到这些系统。

如果你想让部署和写crontabs更简单的话,请查看gem'when': https : //github.com/javan/whenever/

Railscasts关于'每当': http : //railscasts.com/episodes/164-cron-in-ruby

有两个选项。 他们比你在问题中提到的选项要好

  1. Resque 。
  2. Sidekiq 。

尝试后面的一个。 它更快,重量轻,基于多线程,因此不会干扰系统。 你需要调查每天处理的宝石的调度程序。

希望这可以帮助!

使用Heroku调度程序添加到调度本身的句柄。 你可以让它运行一个rake任务,resque或者其他任何东西。

这里有几个可供选择的:

  1. resque (使用resque-scheduler ,但是你必须使用redis)
  2. rufus-scheduler (如果你想要简单的话,resque使用rufus-scheduler本身)
  3. 你可以尝试像这样的一些技巧delayed_job 。 不是很好的调度,但可以使用您的应用程序数据库。