3

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

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

如果有一种纯粹的 rails 方法可以做到这一点,我认为那会更好,这样我就不必在我放置应用程序的每个系统上搞砸了。

4

4 回答 4

2

对于每天运行一次的简单同步作业,我相信拥有一个cronjob就足够了,而且从长远来看可能更稳定。

老实说,在我看来,诸如 Resque 和 Sidekiq 之类的解决方案有点矫枉过正(根据您的需要)。您仍然需要使用调度程序向这些系统发送消息。

如果您希望更轻松地部署和编写 crontabs,请查看 gem ' whenever ': https ://github.com/javan/whenever/

Railscasts 关于“无论何时”:http ://railscasts.com/episodes/164-cron-in-ruby

于 2012-08-01T13:40:06.393 回答
2

有两种选择。它们比您在问题中提到的选项更好

  1. 回复_
  2. 西德基克

试试后一种。它更快、更轻量并且基于多线程,因此不会干扰系统。您需要查看两个 gem 的调度程序以便每天进行处理。

希望这可以帮助!

于 2012-08-01T01:36:12.007 回答
2

使用Heroku 调度程序添加到句柄调度本身。您可以让它运行 rake 任务、resque 或其他任何东西。

于 2012-08-01T06:59:38.263 回答
1

这里有一些可供选择:

  1. resque(使用resque-scheduler。但你必须使用 redis )
  2. rufus-scheduler(如果你想要一些简单的东西,resque 使用 rufus-scheduler 本身)
  3. 您可以尝试使用类似这样的一些技巧来延迟作业。不太适合调度,但可以使用您的应用程序数据库。
于 2012-08-01T06:39:36.900 回答