Nodejs でスケジュールされたタスクを実行する方法についての簡単な説明

青灯夜游
リリース: 2021-10-29 15:32:16
転載
2947 人が閲覧しました

この記事では、Node スケジュールされたタスクを実装する方法を紹介します。皆様のお役に立てれば幸いです。

Nodejs でスケジュールされたタスクを実行する方法についての簡単な説明

現在このようなご要望をいただいております。各ユーザーはスケジュールされたプッシュをカスタマイズできます。スケジュールされたタスクの時間構成はユーザー自身が設定し、いつでも変更できますサーバーは、スケジュールされたタスクを実行する時間を設定します。 [推奨される学習: "nodejs チュートリアル "]

スケジュールされたタスクのサイクルがわかっている場合は、Linux Crontab のスケジュールされたタスクを実装できます。ノードにはすでに比較的成熟したソリューションがあります。以下に、私自身が学んだ Node のスケジュールされたタスクのソリューションを紹介します。

egg フレームワークによって提供される Schduler スケジュールされたタスク

egg は、Alibaba の Node エンタープライズ レベルのアプリケーション フレームワークであり、開発者がスケジュールされたタスクをエレガントに作成するための一連のメカニズムを提供します。詳細については、公式ドキュメントを参照してください: https://eggjs.org/zh-cn/basics/schedule.html 具体的な使用法についてはここでは詳しく説明しませんが、その構成の使用法については簡単に説明します。議論しました。

1. 静的にスケジュールされたタスク、つまりスケジュールされたサイクルには、ハードコーディングされた処理ロジックがあります。

2. スケジュールされたタスクを動的に構成することで、比較的柔軟性が高くなります。開発者は、構成ファイルを通じてスケジュールされたタスクのサイクルを制御できます。

3. コードを通じてスケジュールされたタスクを手動でトリガーする スケジュールされたタスクを何らかのロジックに基づいてトリガーするかどうかを決定できます。

上記の 3 つの点から、egg が提供するスケジュールされたタスクでは、ユーザーが自分でタイミング期間を設定するというニーズを満たすことができないため、他の解決策を探すしかありません。 -schedule ライブラリは、スケジュールされたタスク機能も提供します。

node-schedule

node-schudule のドキュメントを参照した後 https://www.npmjs.com/package/node-scheduleその後の使用法は次のとおりです:

const schedule = require('node-schedule');

const job = schedule.scheduleJob('42 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});
ログイン後にコピー

はい、カスタム タイミング サイクルをサポートしています。これは私たちのニーズを満たすことができ、私たちが選択できます。素晴らしい!

引き続き他の開発者の使用方法を参照してください。この記事で、ノード スケジュールに関連した問題レコードを見つけました。つまり、スケジュールされた時刻にタイマーが 2 回実行されました。特定の問題については、原文を参照してください: https://cnodejs.org/topic/5b58414b8d66b90b2b7384a7。これは確率の低い問題です。検証はしていません。ニーズがあるため、タイマーは 2 回実行されますが、結果には影響しません。したがって、これは使用を妨げる障害ではありません。興味のある学生は、次のことを行ってください。バグをテストします。

最後に記載

最後に、私たち自身のプロジェクトのスケジュールされたタスクの解決策の概要を示します。興味のない学生は読み飛ばしてください。

私たちのバックエンドは Egg フレームワークを使用しているため、最終的な解決策はノード スケジュール タイマーをエージェント プロセスに追加することです。ユーザーのタイマーはエージェント プロセスで同期的に実行されます。現在、ユーザーの数は増えていません。サイズが大きいので当面はこの解決策しか考えていませんが、将来的に容量が増えた場合にはバックエンドを分散配置する可能性もあります。

これは問題であり、単一のプロセスを大容量で実行することも問題になります。また、egg 自体も、エージェント プロセスであまりにも多くのビジネス関連のことを実行することを推奨しません。もう 1 つ重要なことは、エージェントは補助プロセスであるということです。一部の公開作業はエージェント内で完了します。キャッチされないエラーが発生した場合、エージェントは終了せずに再起動されるため、フォールト トレランス処理を適切に実行する必要があります。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がNodejs でスケジュールされたタスクを実行する方法についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!