59

疑問に思っているのですが、おそらくワーカープールを使用してバックグラウンドタックを実装する方法はありますか。方向性を教えてもらえますか、このためのパッケージを書くことを考えていますか?

4

4 に答える 4

108

2019年更新

何かのパッケージを作成することを考える前に、まず、必要なことを実行する既存のパッケージがあるかどうかを確認してください。Meteor の世界では、これは Atmosphere で「ジョブ/キュー/タスク/ワーカー管理/スケジューリング」パッケージを検索し、npm で同じ検索語を検索することを意味します。また、要件をより正確に定義する必要があります。

  • 永続性が必要ですか、それともインメモリ ソリューションが機能しますか?
  • ジョブを異なるマシンに分散できるようにしたいですか?

流星固有

  • job-collection - 信頼性があります (2014 年にスタートアップの本番環境で使用しました) が、現在はメンテナンス モードです。どこでも (サーバー、クライアント) 実行される永続的なジョブをスケジュールできます。
  • SteveJobs - いくつかの強力な Meteor ツールの作成者である Max Savin によって積極的に管理されています
  • littledata:synced-cron - 「Meteor 用のシンプルな cron システムです。複数のプロセス間でのジョブの同期をサポートしています。」

放棄されたパッケージ:

Npm パッケージ

Meteor は数年前から npm パッケージを直接使用できるようになっているため、この質問は NPM でジョブ/ワーカー/キュー管理パッケージを見つけることになります。永続性を気にしない場合:

  • Asyncは、「通常の「機能的」容疑者 ( mapreduce、 ...) と、非同期制御フローの一般的なパターン ( 、filter、...) を含む約 70 の関数を提供します」eachparallelserieswaterfall
  • d3-queue - ミニマル、D3 作者 Mike Bostock によって書かれました

持続性が必要な場合、Meteor は既に MongoDB を使用しているため、MongoDb への持続性を備えたジョブ スケジューリング パッケージを使用すると有利な場合があります。最も強力で人気のあるのはAgendaのようですが、残念ながら数か月間メンテナンスされておらず、かなりの問題のバックログがあります。

プロジェクトにredisに基づく依存関係を追加する場合は、さらに多くの選択肢があります。

  • bull - Redis に支えられた、ノード向けの最もフル機能のジョブ キュー ソリューション
  • bee - シンプル、高速、堅牢。Bull が示すメモリ リークの影響を受けない
  • Kue - Node の優先ジョブキュー

MongoDB と同様に、Redis も (Redis Sentinel を介して) 高可用性を提供できます。複数のワーカー マシンにジョブを分散する場合は、それらすべてを同じ Redis サーバーに向けることができます。

于 2014-01-25T14:45:05.433 に答える
2

特定の間隔または日付でタスクをスケジュールするために使用できる Cron ジョブに基づくパッケージがあります。パッケージは次のとおりです: https://atmosphere.meteor.com/package/cron

そして、たまたまそのパッケージのソースを調べると、彼らが単に使用していることに気付くでしょう:

Meteor.setInterval( ... , delay );

したがって、タスクをデータベースに保存し、起動時に一定間隔でロードすると、おそらく正しい方向に進むでしょう。

于 2013-07-17T21:10:21.143 に答える
2

Meteor 固有のものをお探しの場合は、Steve Jobs という新しいパッケージがあることをお知らせします。メソッドを呼び出すのと同じくらい簡単にバックグラウンド ジョブを実行できます。

ジョブを 1 回だけ実行する、失敗したジョブを再試行するなど、期待されるすべての標準機能を備えています。詳細については、GitHub を参照してください。

http://github.com/msavin/stevejobs

于 2017-10-27T12:14:18.783 に答える
0

適切なサポートが彼らのロードマップにあると推測していますが、それまでの間、私はsetInterval. cron-tickパッケージを参照してください。

于 2012-07-29T07:38:32.620 に答える