首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(RAILS)每2分钟循环一次定制Rake,这是个坏主意吗?更好的实施方式?

(RAILS)每2分钟循环一次定制Rake,这是个坏主意吗?更好的实施方式?
EN

Stack Overflow用户
提问于 2009-06-13 23:42:54
回答 3查看 1.6K关注 0票数 1

我目前已经创建了一个自定义rake文件,它执行以下操作:

1.)检查外部源是否有“新”项

2.)对于提要数组中的每个新项,它用新记录更新我的数据库

3.)我现在把它放到了WHILE循环中。while循环有一个(@ loop while)实例变量,该变量最初被设置为true,如果引发任何异常,则该变量设置为true。将其重置为false (因此循环结束)。

下面是一个例子:

代码语言:javascript
复制
   While(@loopcheck) do 
      begin
       ....(code here)...
      rescue
        Exception => e
        @loopcheck = false
      end
      sleep(120)
   End

这编码不好吗?有更好的方法吗?理想情况下,我只想运行一个后台任务,只需每2-3分钟检查一次新提要。我查看了Starling/Workling,但这似乎有点过火了,我不确定是否通过CRON运行脚本/运行程序,因为它每次都会重新加载整个rails环境。BackgroundRB也有点过分吗?不是吗?

只是想找点主意。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-13 23:49:52

把cron和睡眠结合起来。它将确保当你遇到异常时,事情不会完全崩溃。加载“完整的rails环境”并没有那么糟糕:3-6秒是最坏的情况。所以,你的睡眠循环运行5次。每12分钟运行一次。合乎道理?

代码语言:javascript
复制
*/12 * * * * rake your task

## your rake task - valid for 10 mins -- 5 x 2 mins sleep worth.

@loopcheck = true

1.upto(5) do 
    begin
       ....(code here)...
    rescue
      Exception => e
      @loopcheck = false
    end
    break if not @loopcheck
    sleep(120)
end
票数 2
EN

Stack Overflow用户

发布于 2009-06-14 00:09:24

看看最近播出的“随时随地”的铁路新闻

链接在这里,评论讨论了备选方案。

http://railscasts.com/episodes/164-cron-in-ruby

票数 2
EN

Stack Overflow用户

发布于 2009-06-14 00:16:02

假设您在Unix框上,最简单的事情是每两分钟从cron运行一次脚本,而不需要循环/睡眠。这样您就可以避免在脚本失败时监视和重新启动脚本。如果失败了,cron会给你发一封电子邮件。

正如您已经注意到的,这种方法的缺点是,启动Ruby进程每两分钟就会受到影响。这很重要吗?只有你可以说。我在一个轻装的盒子上有几个这样的脚本,忘了它们都在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/991795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档