nodejitsu でホストされ、常に変更されている cloudant db から継続的に変更を取得する小さなノード サーバーを作成しています。
私はfollow モジュールを使用しています。これは、興味深いcouchdb changes fetcherを提供します。私が抱えている問題は、サーバーを再起動せずに動作させたいということです。つまり、絶え間なく、絶え間なく働くことです。しかし、nodejitsu サーバーが再起動されることがあります。たとえば、昨日の午後 3 時 30 分に動作させたままにし、今日の午前 8 時頃に再起動しました。followモジュールによってタイムアウトイベントがトリガーされると、サーバーの「死」が発生することがわかりました。このイベントを処理する必要があると思いますが、方法がわかりません。このタイムアウトは、cloudant からのハートビートに関連していると思います。
私は次のようなものを書いています:
feed.on('timeout', function (err){
console.log("Timeout!");
});
そして、変更は次のように取得されます。
var feed = new follow.Feed({db:"https://"+user+":"+password+"@"+host+"/"+dbSource,since:"now",filter:"sync/notSynchronizedFilter"});
feed.on('change',function (change){
//...do stuff
});
編集:興味深いことがあります。タイムアウト イベントがトリガーされた直後に、エラーが発生します。
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
編集 2:詳細情報。
タイムアウトを取得するのが非常に困難になるように、最終的にハートビートを 5 分に変更しました。この種の私の特定の問題は解決しましたが、元の質問には答えません。エラーについては、「follow」モジュールに関係しているのではないかと思いますが (つまりバグです)、よくわかりません。
前もって感謝します!!
ブルーノ。