[英](RAILS) Looping a Custom Rake every 2 mins, Bad Idea? Better way to implement?
我目前创建了一个自定义rake文件,它执行以下操作:
1.)检查“NEW”项目的外部Feed
2.)对于Feed数组中的每个新项目,它使用新记录更新我的数据库
3.)我目前在WHILE循环上得到它。 while循环有一个(@loopcheck)实例变量,最初设置为true,如果引发任何异常。 将其重置为false(因此循环结束)。
这是一个例子:
While(@loopcheck) do
begin
....(code here)...
rescue
Exception => e
@loopcheck = false
end
sleep(120)
End
这是不好的编码? 有一个更好的方法吗? 理想情况下,我只想运行后台任务,每2-3分钟检查一次新的Feed。 我查看了Starling / Workling,但这看起来有点像矫枉过正,我不确定是否通过CRON运行脚本/跑步者,因为它每次都会重新加载整个rails环境。 BackgroundRB有点矫枉过正吗? 没有?
只是想得到一些想法。
将cron与睡眠相结合。 如果您遇到异常,它将确保事情不会彻底崩溃。 加载“完整的轨道环境”并不是那么糟糕:3-6秒的最坏情况。 所以运行你的睡眠循环5次。 和cron每12分钟运行一次rake任务。 说得通?
*/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
假设你在Unix机器上,这个最简单的事情就是每两分钟从cron运行一次脚本,没有循环/睡眠。 这样可以避免在脚本失败时监视并重新启动脚本。 如果确实失败了,cron会给你发一封电子邮件。
正如您所指出的,这种方法的缺点是,每两分钟您就会开始使用Ruby进程。 这有意义吗? 只有你可以说。 我在一个装载很轻的盒子上有几个这样的脚本,忘了它们就在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.