有没有办法配置上帝每隔x个时间重启一次手表?

时间:2013-11-06 23:55:16

标签: ruby twitter god

我有一个来自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条件块样本。有没有办法实现这个目标,还是需要实现自己的条件?

0 个答案:

没有答案