如何让Ruby每10分钟运行一次任务?

问题描述:

我想每10分钟做一次cron作业,但我的系统只做了1小时。所以我正在寻找一种方法来做到这一点。我见过Timersleep,但我不确定如何做到这一点,甚至更好,但实现这一目标的资源。如何让Ruby每10分钟运行一次任务?

+0

你怎么会知道,当他们做跳舞? (http://en.wikipedia.org/wiki/Minuet) – JasonFruit 2010-08-21 18:12:42

+0

有没有摄制组但本质上它在做什么是添加RSS源,并有一个“entries_total”的属性,得到更新并通知饲料的总数量越来越添加。 – s84 2010-08-21 18:23:05

看看http://rufus.rubyforge.org/rufus-scheduler/

鲁弗斯调度是一个Ruby宝石调度的代码块(工种)。它了解在特定时间,某个时间,每x次或仅通过CRON语句执行工作。 rufus-scheduler不能替代cron/at,因为它运行在Ruby内部。

+0

看起来像可以工作。我会回到这个。 – s84 2010-08-21 18:24:22

+0

我自己并没有使用它,但是我在创建一个带有node.js的作业调度程序时从中获得了一些想法。代码看起来不错,我认为它适用于你。另外:http://adam.heroku.com/past/2010/4/13/rethinking_cron/ – grm 2010-08-21 18:32:19

+0

我看到这篇文章还提到:http://github.com/bvandenbos/resque-scheduler – grm 2010-08-21 18:33:46

要做到这一点可靠,投资于VPS并根据需要创建10分钟的cron作业。试图独自模拟cron很可能会以无法预料的方式失败。

创建睡眠过程,是不是要走这个道路;如果你的服务器不允许你*地创建你自己的cron,你可能无法为这类事情创建自己的后台进程。您可以根据每项请求查看并查看需要完成多少工作(如果是上次请求后的25分钟,则可能需要执行两次),然后返回并回溯处理。

不过,伤势严重。你需要你自己的服务器来可靠地做到这一点。

+0

没有理由重新实现车轮,尤其是考虑到广泛使用,稳健和成熟的cron。 +1 – 2010-08-21 18:27:14