1

Twitter からデータをストリーミングし、それを別のアプリケーションにフィードする小さなスクリプトがあります。twitterそのために、5.0.0.rc.1 リリースの公式の gem を使用しており、ストリーミング機能は実験的であるとフラグが付けられていますが、これは問題ありません。とにかく、それは重要なアプリケーションではありません。

予期しないクラッシュやその他のネットワークの問題などに耐えるようにするために、このスクリプトをgod(0.13.3) で監視しており、ほとんどの場合、実際に機能します。なんらかの理由で、スクリプトが完全にハングアップし、奇数秒ごとにツイートを受信する必要があるときに、何もしないままになることがあるようです (デバッグ セットアップでは、広く使用されている用語を使用しています)。

psとしてリストされSs、0% の CPU とわずか 25MB の RAM を消費します。

gem (または依存関係)に問題がある可能性があるtwitterと思いますが、今はコードに飛び込んで修正する余裕はありません。

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、プロジェクトのホームページにある条件ブロックのサンプルに基づいています。これを達成する方法はありますか、それとも自分の条件を実装する必要がありますか?

4

0 に答える 0