これが私の問題です。データを収集してスキーマに保存するワーカーが1つ実行されています。これらのスキーマには、保存時に発生するポスト ミドルウェア関数があります。問題は、ポスト ミドルウェアがループして同じスキーマに再度保存される前に、ワーカーがポスト ミドルウェアの動作が完了するのを待たないことです。私のワーカーが実行を続けると、これが完了する前にこれらの機能を何度もキューに入れるため、大幅に遅くなります。これらのポスト ミドルウェア関数は、独自のポスト関数も実行する他のスキーマにも保存されます。保存されている何十万ものオブジェクトを扱っているため、非常に遅くなり始めていることがわかります。
私のコードの種類がどのように見えるかの例:
ワーカー
tranFunc = (stuff, Object) ->
newObject = Object
newObject = new Object newObject
newObject.save (err) ->
保存はスキーマにジャンプして、さらに何かが発生しますが、ワーカーはそれが完了する前にループし、続行します
スキーマ
ObjectSchema.post("save", function() {
DOING STUFF
next()
ワーカーへのコールバックとして a のようなものを使用できる可能性があることを読みましたが、それを使用しようとしても成功しませんでした。