我有一个来自Twitter的小数据流数据并将其提供给另一个应用程序。我正在使用其5.0.0.rc.1版本中的官方twitter
gem,其中流功能被标记为实验性的,这对我来说很好。无论如何,这不是一个关键的应用程序。
为了让它能够承受无法预料的崩溃和其他网络问题等等,我将这个脚本监视为god
(0.13.3),它确实在大多数情况下都有效。出于某种原因,虽然看起来偶尔脚本将完全挂起并且闲置,而推文应该每隔一秒接收一次(调试设置使用广泛使用的术语)。
ps
将其列为Ss
,消耗0%的CPU和仅25 MB的RAM。
我相信在twitter
gem(或依赖项)中可能存在一些陷阱,我现在没有兴趣深入研究代码并尝试修复它。
God.watch do |w|
w.name = 'twitter-streamer'
w.env = {
'TWITTER_CONSUMER_KEY' => 'key',
'TWITTER_CONSUMER_SECRET' => 'secret',
'TWITTER_ACCESS_TOKEN' => 'token',
'TWITTER_ACCESS_TOKEN_SECRET' => 'very_secret'
}
w.start = "twitter_streamer --hashtags cheese"
w.keepalive
w.log = File.join APP_HOME, 'log', 'twitter-streamer.log'
end
这是我手表的定义。正如你所看到的,这本书几乎就是这本书。我想要的是一个允许我经常强行重启过程的条件。这对我的需求来说是一个可接受的解决方法。
也许像
# lifecycle
w.lifecycle do |on|
on.condition(:every) do |c|
c.within = 15.minute
c.transition = :restart
end
end
这是基于项目主页上的:flapping
条件块样本。有没有办法实现这个目标,还是需要实现自己的条件?