2010-04-12 27 views
2

这看起来像是一个关于stackoverflow的FAQ,但我的要求有点不同。虽然我之前使用BackgroundRB和DJ在ruby中运行后台进程,但这次我的要求是对大量数据运行一些沉重的分析和数学计算,而且我只需要在每月的前15天。通过这个,我很想使用cron并运行ruby脚本来实现这个目标。在rails中的后台处理

我想知道/理解的是: 1 - 使用cron是一个好主意(因为我不是系统管理员,所以虽然我对cron有基本的想法,但我不太过于自信完美地完成) 2 - 我们可以以某种方式修改DJ仅在本月的前15天运行(使用/不使用cron),然后只要一天中队列中的所有作业都结束,就停止并退出不希望它每次都为了一份新工作而对数据库进行ping操作......当DJ开始时,无论任务将在队列中,这将是所有的)。

我不确定我是否以正确的方式提出问题,但对此方向的任何帮助将不胜感激。

谢谢

回答

3

用于cron的“分钟小时天月星期几”时间规范,通过每月的十五凌晨3:33 1日将是“33 3月1日至15日* *”

+0

非常酷。不知道你可以做那样的范围。 +1 – 2010-04-12 20:54:05

+0

非常感谢......我不知道它会那么简单! – hashpipe 2010-04-15 14:22:33

0

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

我不确定“每个月的唯一第一天”事件,但是您可以在任务内轻松处理这种情况,对吧?

编辑:

退房齐名的回答,看看如何只在一定范围内的天运行任务。

+0

可能要考虑railscron - http:// workingwithrails。com/railsplugin/4962-rails-cron – klochner 2010-04-12 17:42:04

0

我也有过这样的要求。我遵循Advanced Rails Recipes book中的“自动定期任务”配方75。配方由David Bock编写。它有一些代码片段和关于如何使用cron和capistrano可以实现的指导原则。然而,关于必须在目标机器上的用户/权限还有一个未解决的问题(但提到)。做正确并不难,你只需要记住要做到这一点,并把它放在你的部署capistrano脚本中。

大卫博克似乎继续在这方面的工作,现在创造了一个与cron一起使用的宝石:请参阅his blog,并按照crondonkulous on github。 Crondonkulous可能会很好地照顾这个用户/许可的事情和更多,我没有尝试过。

Jarl