Meteorでのバックグラウンドタスク
-
13-12-2019 - |
質問
私は疑問に思っています、おそらくワーカープールで、バックグラウンドtaksを実装する方法があります。あなたは私に方向性を示すことができます、私はこれのためのパッケージを書くことを考えていますか?
解決
2019更新
何かのためにパッケージを書くことを考える前に、最初にあなたが必要とする既存のパッケージがあるかどうかを見てください。これは、流星の世界では、これは「ジョブ/キュー/タスク/労働管理/スケジュール」パッケージの雰囲気を検討してから、同じ検索用語ではNPMで検討することを意味します。また、要件をより正確に定義する必要があります。
- あなたは永続性が欲しいのですか、それともメモリ内の解決策が機能しますか?
- さまざまなマシンにジョブを配布できるようにしますか?
流星特異的
- job-collection - 信頼できる(私は2014年に生産でそれを使用しましたスタートアップ)、現在メンテナンスモードになっています。永続的なジョブを実行するようにスケジュールすることを可能にします(サーバー、クライアント)。
- stevejobs - Max Savinによって積極的に維持され、いくつかの強力な流星ツール
- LittleData:Synced-Cron - "Meteor用の簡単なcronシステム。複数のプロセス間のジョブの同期化をサポートします。 "
放棄されたパッケージ:
- artwells:queue - 優先順位、スケジューリング、ロギング、再キューイング。 MongoDBによって裏打ちされたキュー。 last コードコミット:2015-Oct。
- スーパーベーシックCRONパッケージ: easycron 。最後の更新:2015年12月
- 差動:workers - 非同期ジョブに取り組むためのヘッドレスワーカーメータプロセス。 last コードコミット:1月2015
- cron ( 2015年以来)
- PowerQueue - 放棄された 2014年以来キュー非同期タスク、スロットルリソース使用量、再試行に失敗しました。サブキューをサポートします。 スケジュール。テストはありませんが、 nifty demo 。 再帰呼び出しを使用しているため、長い間実行するのには適していません。
NPMパッケージ
Meteorは、NPMパッケージを数年間直接使用することができましたので、この質問はジョブ/ワーカー/キュー管理パッケージ。永続性を気にしない場合:
- async "は、通常の「機能」容疑者を含む約70の機能(
map
、reduce
、非同期制御フロー(filter
、each
、parallel
...)の一般的なパターンと同様に、series
...)およびいくつかの一般的なパターン。 - d3-queue - D3著者Mike Bostock
永続性が望まれている場合、MeteorはMongoDBをすでに使用しているので、MongoDBへの持続性を持つジョブスケジューリングパッケージを使用することが有利であり得る。最も強力で人気のようです agenda 、残念ながらそれは数ヶ月以内に維持されていません。それは問題
の重要なバックログを持っています。redis をプロジェクトに追加した依存関係を追加しても構わないと思っています。< / P>
- un-a> - ノード用の最も機能的なジョブキューソリューションRedis にバックアップしました
- xee - シンプル、速い、堅牢です。
MongoDBのように、Redisは(Redis Sentinel経由で)高可用性を提供することもできます。また、複数のワーカーマシンの間でジョブを配布したい場合は、https://github.com/optimalbits/bull/問題/ 873#issuecomment-437445002 "REL=" NOFOLLOW NOREFERRER ">それらすべてを同じRedisサーバー。
他のヒント
特定の間隔または日付にタスクをスケジュールするために使用できるCronジョブに基づくパッケージがあります。ここにパッケージがあります: https://atmosphere.meteor.com/package/cron
そして、あなたがそのパッケージのソースを調べることが起こるならば、あなたは彼らが単に使っていることに気付くでしょう:
Meteor.setInterval( ... , delay );
したがって、タスクをデータベースに保存してから、起動時に間隔を空けてロードすると、おそらく正しい軌道に乗るでしょう。
Meteorに固有のものを探している場合は、Steve Jobsという新しいパッケージがあると共有できます。走行の背景ジョブをメソッドを呼び出すほど簡単に実行します。
ジョブの実行や失敗したジョブなどのことなど、予想されるすべての標準機能を持っています。GitHubで詳しく説明することができます:
私は適切なサポートが彼らのロードマップにあると思いますが、その間に私はsetInterval
を介してハッキーな方法で行くことに成功しました。 cron-tick パッケージを参照してください。