node.js用のジョブスケジューラライブラリはありますか?[閉まっている]


155

特定の時間に実行されるようにいくつかの関数をスケジュールできるようにするいくつかのcronのようなライブラリはありますか(たとえば、15時間30分、現在からx時間などではない)。この種類のライブラリがない場合、どのように実装する必要がありますか?毎秒呼び出されるようにコールバックを設定し、時刻を確認して、その時刻にスケジュールされたジョブを開始する必要がありますか?


4
node-cronは非常に良いオプションのようです
JtR

var schedule = require( 'node-schedule'); 最高のものです。乾杯!!!
Saumyajit

回答:


122

node-cronは私が説明したとおりのことを行います


4
cronjob宣言をapp.js / scripts.jsに記述しますか?
ArVan

node-cronでは、node.jsからシステムcronジョブを編集できますか?実行中のノードプロセスに依存していますか?または、メインプロセスが終了した後でもプログラムを実行できるようになりますか?
Ajar

5
@Ajarいいえ、nodejsプロセスの終了後、すべてのジョブが失われます。node-cronに付属するcronテーブルはありません
2014

1
@ChrisCだと思います。フレームワークを使用していない場合は、でcronを宣言しapp.jsます。でsails.js、私はそれを行うbootstrap
ArVan

2
@arVan興味があれば、私は実際にagendaここでウォーターラインのサポートを追加する作業を始めました:github.com/mikermcneil/agenda (文字通り、始まったばかりです
mikermcneil '26

44

node-schedule Nodeのcronに似たジョブスケジューラで、cronに似ていないジョブスケジューラ。


2
これは、時々混乱するcrontab構文を回避でき、私の意見ではもう少し読みやすくなっています。
Simon East

議題のように、持続性0.1.13を提供するために継ぎ合わせ
drdrej

5
node-scheduleは永続性を提供しません。ドキュメントごと: Note that node-schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes.
Mike Hedman '10

34

議題はノードの軽量ジョブスケジューリングです。これはあなたを助けます。


1
アジェンダは永続化レイヤー(mongo)を備えたnode-cronに基づいています。したがって、上記の答えの方が優れています。
drdrej 2014

51
明確にするために、アジェンダの作成者として、実際にはnode-cronにまったく基づいていません...
Ryan

1
アジェンダライブラリは、セットアップが簡単でユーザーにとって使いやすいため、唯一無二の最良のライブラリです。賞賛@ライアン
Vimalraj Selvam

4
agendaは一貫性のない動作を持っていることがわかったので、それを使用することを勧めません。未解決の問題とPRを確認して、独自の電話をかけます。
Russbear 2016

2
注意してください、議題は生産準備ができていません。それは持っていたメモリリーク問題と問題のチェックを。まだたくさんのバグがあります。準備ができたら有望に見えます。
セバスチャン

15

later.jsは、非常に優れたJavaScript「スケジューラー」ライブラリーです。Node.jsまたはWebブラウザーで実行できます。


3
私はこのスレッドでいくつかの提案を試しましたが、このモジュールは、最もユーザーフレンドリーで簡単に操作できることがわかりました。おかげで!
Gene Bo

12

私はkueを使用していますhttps : //github.com/learnboost/kue。かなりいいです。

公式機能と私のコメント:

  1. 遅れた仕事。
    • ジョブを特定の時間に実行させたい場合は、その時間から現在までのミリ秒を計算します。job.delay(milliseconds)を呼び出します(ドキュメントには分と書かれていますが、これは誤りです。)「jobs.promote();」を追加することを忘れないでください。ジョブを初期化するとき。
  2. ジョブイベントと進行状況pubsub。
    • わかりません。
  3. 豊富な統合UI。
    • 非常に便利。統合されたUIでジョブのステータス(完了、実行中、遅延)を確認でき、コードを記述する必要はありません。また、UIで古いレコードを削除できます。
  4. 無限スクロール
    • 時々機能しない。リフレッシュする必要があります。
  5. UI進行状況の表示
    • 時間のかかる仕事に適しています。
  6. ジョブ固有のロギング
    • これらは遅延ジョブであるため、有用な情報をジョブに記録し、後でUIを使用して確認する必要があります。
  7. Redisを搭載
    • 非常に便利。node.jsアプリを再起動しても、すべてのジョブレコードはそのまま残り、スケジュールされたジョブも実行されます。
  8. オプションの再試行
    • いいね。
  9. 全文検索機能
    • 良い。
  10. RESTful JSON API
    • 良い音ですが、私はそれを使用することはありません。

編集:

  1. kueはcronのようなライブラリではありません。
  2. デフォルトでは、kueは繰り返し実行されるジョブ(たとえば、毎週日曜日)をサポートしていません。

6
Kueはジョブキューであり、スケジューラではありません。
Leonid Beschastny 2013

1
@LeonidBeschastny Kueはジョブキューです。また、「特定の時間に実行されるようにいくつかの関数をスケジュールさせる」ことができるので、それもスケジューラです。
Vince Yuan

Kueの仕事は遅れるだけで、特定の時間にスケジュールすることはできないと思いました。
Leonid Beschastny 2013

@LeonidBeschastnyあなたは正しいです。Kueは、特定の時間にジョブをスケジュールするためのAPIを提供していません。しかし、私が述べたように、「特定の時間にジョブを実行させたい場合は、その時間と現在の間のミリ秒を計算します。job.delay(milliseconds)を呼び出します(ドキュメントは分を言っていますが、これは間違っています。)」非常に簡単です。
ビンスユアン

1
あなたはアガンダに似ているキュースケジューラーを試すことができます
Fruch

9

node-crontabを使用すると、node.jsからシステムcronジョブを編集できます。このライブラリを使用すると、メインプロセスが終了した後でもプログラムを実行できます。免責事項:私は開発者です。


ノードサーバーがリセットされても持続しますか?
jonperl 2013年


はい、ジョブは保持されます。
Blago 2013

そのGPLはライセンスされているため、商用プロジェクトでは使用できません。
drdrej 2014

5
ライセンスは現在MITです
Blago 2014年

8

あなたはtimexeを使うことができます

使いやすく、軽量で、依存関係がなく、cronよりも構文が改善されており、ミリ秒単位の解像度でブラウザで動作します。

インストール:

npm install timexe

使用する:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(私は著者です)


この例をいくつか教えてもらえますか?
Alex

1
githubの例をご覧ください:github.com/paragi/timexe
SimonRigétSep

2

私はnode-runnrの常識です。それは仕事を作成するための非常にシンプルなアプローチを持っています。また、時間と間隔の宣言も非常に簡単で明確です。たとえば、10分20秒ごとにジョブを実行するには、

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

毎日午前10時と午後3時に仕事をするには、

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

とてもシンプルです。詳細:https : //github.com/Saquib764/node-runnr




0

これはすべての人に適しているわけではありませんが、ソケットを介してコマンドを受け取るようにアプリケーションがすでに設定されている場合は、netcatを使用して、適切なcronを介してコマンドを発行できます。

echo 'mycommand' | nc -U /tmp/myapp.sock
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.