我目前已经创建了一个自定义rake文件,它执行以下操作:
1.)检查外部源是否有“新”项
2.)对于提要数组中的每个新项,它用新记录更新我的数据库
3.)我现在把它放到了WHILE循环中。while循环有一个(@ loop while)实例变量,该变量最初被设置为true,如果引发任何异常,则该变量设置为true。将其重置为false (因此循环结束)。
下面是一个例子:
While(@loopcheck) do
begin
....(code here)...
rescue
Exception => e
@loopcheck = false
end
sleep(120)
End这编码不好吗?有更好的方法吗?理想情况下,我只想运行一个后台任务,只需每2-3分钟检查一次新提要。我查看了Starling/Workling,但这似乎有点过火了,我不确定是否通过CRON运行脚本/运行程序,因为它每次都会重新加载整个rails环境。BackgroundRB也有点过分吗?不是吗?
只是想找点主意。
发布于 2009-06-13 23:49:52
把cron和睡眠结合起来。它将确保当你遇到异常时,事情不会完全崩溃。加载“完整的rails环境”并没有那么糟糕:3-6秒是最坏的情况。所以,你的睡眠循环运行5次。每12分钟运行一次。合乎道理?
*/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发布于 2009-06-14 00:09:24
发布于 2009-06-14 00:16:02
假设您在Unix框上,最简单的事情是每两分钟从cron运行一次脚本,而不需要循环/睡眠。这样您就可以避免在脚本失败时监视和重新启动脚本。如果失败了,cron会给你发一封电子邮件。
正如您已经注意到的,这种方法的缺点是,启动Ruby进程每两分钟就会受到影响。这很重要吗?只有你可以说。我在一个轻装的盒子上有几个这样的脚本,忘了它们都在那里。
https://stackoverflow.com/questions/991795
复制相似问题