2017-06-15 7 views
3

私はNodeJSをサーバー側に、MongoDBをデータベースとして使用しています。それは本当に素晴らしい一緒に働く。いいえMongoクエリは、バックグラウンドでcronが実行されているときに結果を得ます。

今私はnode-scheduleライブラリを私たちのシステムに追加して、cron-jobのような関数を呼び出しました。

この処理には数時間かかることがあります。

私の問題は、cronが実行されているときはいつでも、私のサイトのすべてのユーザーが応答しません。つまり、データベースがロックされます。

問題を1週間から克服するには、サイトを使用しているユーザーに影響を与えずに、cronを実行するための良い解決策が必要です。

+0

デバッグのヘルプを求める質問(** "なぜこのコードは動作しませんか?" **)は、*目的の動作、*特定の問題またはエラー、およびその問題を再現するのに必要な最短コード*自体**。 **明確な問題文**のない質問は他の読者には役に立たない。参照してください:[最小、完全、および検証可能な例を作成する方法](http://stackoverflow.com/help/mcve) –

答えて

0

通常、ワーカーを作成して、サーバーの一部ではない別のエントリポイントにワーカーを実行したいと思うでしょう。これを達成するには複数の方法があります。

1)同一のサーバが、セットアップcronジョブへの使用)、あなたのAPI

3と相互作用して、別のサーバー上でサービスワーカーを書く)あなたのデータベース

2と対話するために別のサーバー上のワーカーを書きます指定した時刻に作業を行うファイルを実行します。

ただし、サーバーが実行されているのと同じエントリポイントからこれを行うべきではありません。別の実行ファイルが必要です。

これを実行するために実行できることが1つあります。これは、サーバーを停止させず、子プロセスを実行するためのnode-scheduleのトリガーになります。​​

関連する問題