CronJob構成に記載されている特定の間隔で、相互に依存する3つの非同期タスクを実行するCronJobを実行する必要があります。
非同期タスク-1:特定の基準で結果をフェッチするためのクエリテーブル
非同期タスク-2:タスク-1でフェッチされた結果に対して非同期操作を実行します
非同期タスク3:タスク2で実行された操作で、対応するIDのテーブルエントリを更新します。
最初の間隔のタスクが終了する前に、CronJobの次の間隔が開始された場合、どうなるかわかりません。そして、これをどのように管理することができますか。
より具体的な質問: SQLテーブルと実行中のタスクの間の同期を維持してUPDATE TASK
、あるサイクルで保留中の場合、次のサイクルで同じタスクを実行しないようにする方法はありますか?
node-cron
CronJobの開発にnpmモジュールを使用しています。
残念ながら、cron
ジョブ間の依存関係はサポートされていないため、これは自分で処理する必要があります。基本的に2つのオプションがあります。
JavaScriptで使い慣れたツールを使用できるため、タスクをマージできれば、作業ははるかに簡単になります。そうでない場合は、次のようなことを行うことができます。
2018-08-31-task-1-results.csv
)2018-08-31-task-1-results.csv
存在するかどうかをチェックします。成功した場合は、前のタスクが成功したことを認識し、ファイルを処理して出力を別のファイルに保存できます(例2018-08-31-task-2-results.csv
)。つまり、タスクは相互に直接依存しているのではなく、前のタスクによって生成された出力に依存しています。これにより、タスクを再実行し、それらの出力にログを記録できます。私の例ではファイルを使用していましたが、中間テーブルなど、すべてのタスクがアクセスできるものであれば何でもかまいません。
将来、これらの依存関係チェーンを手書きし続ける必要がある場合は、LuigiやAirflowなどの多くのタスクパイプラインフレームワークの1つを検討することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加