2016-04-16 6 views
0

毎日午前0時に別のWebサービスからデータを収集し、MongoDBに格納する必要のあるwepappがあります。私のwebappはexpressJSに基づいています。スケジューラを自分のコードに追加する方法はわかりません。それは、クライアントの要求を聞いて、同時にデータを収集する時間であるかどうかを確認することは奇妙に見えます。私は '/ api/collectdata'としてデータ収集機能を提供し、このURLアドレスを0:00 AMごとに訪問するシェルを書くことができますか?サーバーとスケジューラーを組み合わせるための洗練されたソリューションはありますか?サーバー側のnode.jsで毎日実行される通常のジョブを設計するにはどうすればいいですか?

+0

あなたが見つけた場合は、 – santhosh

+0

@santhoshを共有してください。node-scheduleを使用します。私はまだノードスケジュールがサーバの動作にどのように影響するか混乱しています。 – Pao

答えて

3

cron-job、node-scheduleなどのさまざまなnpmモジュールを使用することはできますが、主な欠点は、サーバーが稼働していないときに停止することです(たとえば、 wanaはあなたのモジュールなどを更新する)。

var schedule = require('node-schedule'); 
var jobDate = moment().startOf('day'); 
schedule.scheduleJob(jobDate, function() { 
    //your function 
}); 
1

node-scheduleはあなたにとって大きな助けになります。

これはパッケージ情報です。

ノードスケジュールは、間隔ベースのスケジューリングではなく、時間ベースのスケジューリング用です。 "5分ごとにこの機能を実行する"というようなことをしたいのであれば、setIntervalを使いやすく、はるかに適切なものにすることができます。しかし、「毎月第3火曜日に毎時20:50でこの機能を実行したい」とすれば、ノードスケジュールがニーズに合っていることがわかります。さらに、ノードランタイムが完全にサポートされているため、Node Scheduleにはtrue cronとは異なり、Windowsのサポートがあります。

あなたは

npm install node-schedule

チェックアウトを使用してインストールすることができ、この - Node-shedule

またnode-cronあなたの場合に役立ちます。

+0

これは本当に良いですが、他の答えはここで@sac dahalは、ノードが動作を停止することを示しています。私たちはそれを解決できる可能性があるとします。 – santhosh

+0

cron-jobのためにサーバを稼働させる必要があります。また、いつでも何かを更新したい場合は、その時点でサーバーを稼働させることを前提としています。あなたは安全にこれを使うことができます。 –

+0

@ raptor96私はスケジューリングのためにnode-scheduleモジュールを使用していますが、ローカルではうまく働いてスケジューリングされていますが、サーバー上ではジョブをスケジューリングしません。これで私を助けることができますか? –

関連する問題