Maison  >  Article  >  interface Web  >  Les tâches planifiées disparaissent après le redémarrage de nodejs

Les tâches planifiées disparaissent après le redémarrage de nodejs

WBOY
WBOYoriginal
2023-05-28 10:39:07688parcourir

Node.js est un langage de développement côté serveur largement utilisé, et de nombreuses applications s'appuient sur les tâches planifiées de Node.js. Cependant, lorsque vous utilisez Node.js, vous rencontrez parfois le problème de la disparition des tâches planifiées après le redémarrage. Ce problème affecte dans une certaine mesure la stabilité et le fonctionnement normal de l'application, il doit donc être résolu à temps.

Dans cet article, nous présenterons étape par étape le problème des tâches planifiées qui disparaissent dans Node.js et sa solution.

1. Description du problème

Dans les applications Node.js, nous utilisons généralement setTimeout ou setInterval pour effectuer des tâches planifiées. Ces fonctions nous permettent de définir un intervalle de temps, puis d'exécuter un morceau de code à cet intervalle, en boucle jusqu'à ce que nous n'ayons plus besoin de l'arrêter.

Cependant, lorsque Node.js a été redémarré, nous avons constaté que ces tâches planifiées avaient disparu et qu'elles devaient être redémarrées manuellement. Cela nous amènera à surveiller en permanence l’état d’exécution de l’application, ce qui consomme beaucoup de temps et d’énergie.

2. Cause du problème

Dans Node.js, lorsque nous démarrons une tâche planifiée, elle sera ajoutée à une file d'attente d'événements lorsque la boucle d'événements atteint cette tâche. , il exécutera le code correspondant en fonction de l'intervalle de temps que nous avons défini. Cependant, lorsque nous redémarrerons Node.js, toute la file d'attente des événements sera effacée, donc toutes les tâches planifiées disparaîtront.

3. Solution

Afin de résoudre ce problème, nous pouvons utiliser pm2, l'outil de gestion de processus Node.js. pm2 peut nous aider à gérer le processus Node.js et à maintenir la stabilité et la haute disponibilité des applications.

La solution spécifique est la suivante :

Étape 1 : Installer pm2

Utilisez npm pour installer pm2 :

npm install -g pm2
#🎜🎜 #Étapes 2 : Démarrez l'application Node.js

Utilisez pm2 pour démarrer l'application Node.js :

pm2 start app.js

L'app.js voici notre fichier d'entrée d'application.

Étape 3 : Configurer les tâches planifiées

Utilisez la commande pm2 pour configurer les tâches planifiées :

pm2 cron [interval] [command] [-d args]

où l'intervalle est l'intervalle de temps du tâche planifiée, en unités de secondes ou expression cron ; la commande est la commande que nous voulons exécuter ; les arguments sont les paramètres que nous voulons transmettre à la commande.

Par exemple, si nous voulons exécuter la commande node process.js toutes les 30 secondes, nous pouvons utiliser la commande suivante :

pm2 cron '*/30 * * * * *' 'node process.js'

Remarque : lors de l'utilisation de pm2 pour configurer tâches planifiées, nous devons définir le chemin de l'exécutable cron dans le fichier de configuration pm2 afin que pm2 sache quelle version de Node.js exécuter.

Étape 4 : Enregistrez le fichier de configuration pm2

Utilisez la commande suivante pour enregistrer le fichier de configuration pm2 :

pm2 save

Cela rendra notre fichier de configuration permanent enregistré, et il sera chargé automatiquement au prochain démarrage de l'application.

Grâce aux étapes ci-dessus, nous pouvons résoudre le problème de la disparition des tâches planifiées après le redémarrage de Node.js.

Summary

Les tâches planifiées de Node.js sont une partie importante de l'application, nous devons donc garantir leur stabilité et leur fiabilité. En utilisant l'outil de gestion de processus pm2, nous pouvons facilement configurer et gérer des tâches planifiées pour maintenir le fonctionnement normal et la haute disponibilité des applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn