轨道中的后台处理

时间:2010-04-12 15:44:37

标签: ruby-on-rails ruby background-process

这看起来像是stackoverflow上的FAQ,但我的要求有点不同。虽然我以前使用BackgroundRB和DJ在ruby中运行后台进程,但这次我的要求是对大量数据运行一些繁重的分析和数学计算,我只需要在本月的前15天执行此操作。顺便说一下,我很想使用cron并运行ruby脚本来实现这个目标。

我想知道/理解的是: 1 - 使用cron是一个好主意(因为我不是系统管理员,所以虽然我对cron有基本的想法,但我并不过分自信) 2 - 我们可以以某种方式修改DJ只在本月的前15天运行(使用/不使用cron),然后只需停止并退出当天队列中的所有作业都结束(不想要它)每次为新工作ping数据库......当DJ启动时队列中的任何工作都是如此,这将是全部。

我不确定我是否以正确的方式提出问题,但我们将非常感谢这方面的任何帮助。

由于

4 个答案:

答案 0 :(得分:3)

根据cron的“每小时每月工作日”时间规格,每月1日至15日凌晨3:33将是“33 3 1-15 * *”

答案 1 :(得分:0)

是的,为什么不呢?和cron一起去。它在野外经过了很好的测试,非常适合运行定期任务并且非常易于使用。你甚至不需要学习crontab语法(虽然这很容易) - 只需将你的脚本放到/etc/cron.daily中(这个选项可能只在某些Linux发行版上可用)。

我不确定“本月唯一的第一天”,但你可以在任务中轻松处理这种情况,对吗?

编辑:

查看par的答案,了解如何仅在特定天数内运行任务。

答案 2 :(得分:0)

使用cron会非常简单,而且你有很多例子,它很可靠。

无论如何,这里有一些您可能想要看看的Railcasts的屏幕演员:

Starling and Workling

Custom Daemon

答案 3 :(得分:0)

我也有这个要求。我按照Advanced Rails Recipes book中的“自动定期任务”配方75。食谱由David Bock编写。它有一些代码片段和指导如何使用cron和capistrano实现这一点。但是,关于必须在目标计算机上的用户/权限,存在未解决(但提到过)的问题。要做到这一点并不困难,你只需要记住这样做并将其放入部署capistrano脚本中。

似乎David Bock继续为此工作,现在已经创建了一个用于cron的gem:请参阅his blog,然后按crondonkulous on github。 Crondonkulous可以很好地处理这个用户/许可事情等等,我还没有尝试过。

首领