【问题标题】:Background processing in railsRails 中的后台处理
【发布时间】:2011-02-07 01:49:56
【问题描述】:

这看起来像是关于 stackoverflow 的常见问题解答,但我的要求有点不同。虽然我之前使用 BackgroundRB 和 DJ 在 ruby​​ 中运行后台进程,但这次我的要求是对大量数据运行一些繁重的分析和数学计算,而我只需要在每月的前 15 天执行此操作.通过这个,我很想使用 cron 并运行一个 ruby​​ 脚本来实现这个目标。

我想知道/理解的是: 1 - 使用 cron 是个好主意(因为我不是系统管理员,所以虽然我对 cron 有基本的了解,但我并不太自信能完美地做到这一点) 2 - 我们能否以某种方式将 DJ 修改为仅在该月的前 15 天运行(使用/不使用 cron),然后在当天队列中的所有作业结束后停止并退出(不想要它每次 ping 数据库以获取新工作...无论 DJ 启动时队列中的工作是什么,这就是全部)。

我不确定我是否以正确的方式提出了这个问题,但我们将不胜感激这方面的任何帮助。

谢谢

【问题讨论】:

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


    【解决方案1】:

    使用 cron 的“分钟小时日月日”时间规范,每月 1 日至 15 日凌晨 3:33 将是“33 3 1-15 * *”

    【讨论】:

      【解决方案2】:

      使用 cron 真的很容易,而且你有很多例子,而且很可靠。

      无论如何,这里有一些 Railcast 的屏幕截图,您可能想看看:

      Starling and Workling

      Custom Daemon

      【讨论】:

        【解决方案3】:

        是的,为什么不呢?与cron一起去。它在野外经过了很好的测试,非常适合运行定期任务并且非常易于使用。您甚至不需要学习 crontab 语法(尽管它非常简单)——只需将您的脚本放入 /etc/cron.daily(此选项可能仅在某些 Linux 发行版上可用)。

        我不确定“只有一个月的前 15 天”这件事,但您可以在任务中轻松处理这种情况,对吧?

        编辑:

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

        【讨论】:

        【解决方案4】:

        我也有这个要求。我遵循Advanced Rails Recipes book 中的“自动定期任务”配方 75。食谱是大卫·博克写的。它有一些代码 sn-ps 和关于如何使用 cron 和 capistrano 实现这一点的指南。但是,关于必须在目标计算机上的用户/权限,存在一个未解决(但已提及)的问题。把它做好并不难,你只需要记住去做,然后把它放在你部署的 capistrano 脚本中。

        David Bock 似乎继续致力于此,现在已经创建了一个与 cron 一起使用的 gem:请参阅 his blog,并关注 crondonkulous on github。 Crondonkulous 可能会很好地处理这个用户/权限问题等等,我还没有尝试过。

        贾尔

        【讨论】:

          猜你喜欢
          • 2011-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多