Maison  >  Article  >  interface Web  >  Comment implémenter des tâches planifiées dans le nœud

Comment implémenter des tâches planifiées dans le nœud

藏色散人
藏色散人original
2022-11-04 16:12:284149parcourir

Comment le nœud implémente les tâches planifiées : 1. Utilisez setTimeOut et les événements d'événement pour la gestion ; 2. Triez tous les événements ajoutés et calculez l'intervalle de temps entre l'heure actuelle et l'heure d'occurrence de l'événement la plus récente ; 3. Appelez setTimeOut pour définir le rappel. Peut.

Comment implémenter des tâches planifiées dans le nœud

L'environnement d'exploitation de ce tutoriel : système linux7.3, version node18.4.0, ordinateur Dell G3.

Comment le nœud implémente-t-il les tâches planifiées ?

tâches planifiées du nœud (module node-schedule)

implémente une fonction qui met à jour le code git sur le serveur à midi tous les jours

fichier app.js sous le framework koa2

import schedule from 'node-schedule';
import updateCode from './controllers/hcpLan/fetch'
 
const app = new Koa();
 
const router = new Router();
 
router.get( '/', (ctx, next) => {
      ctx.body = 'hello'
});
 
app.use(router.routes()).use(router.allowedMethods());
 
 
let rule = new schedule.RecurrenceRule()
/**每天的凌晨12点更新代码*/
rule.hour = 0
rule.minute = 0
rule.second = 0
/**启动任务*/
schedule.scheduleJob(rule, () => {
  updateCode.cloneRepo();
  console.log('代码更新了!');
})
 
app.listen(3000)

node-schedule principe : utilisez setTimeOut et les événements d'événement pour la gestion, triez tous les événements ajoutés, calculez l'intervalle de temps entre l'heure actuelle et l'heure d'occurrence de l'événement la plus récente, puis appelez setTimeOut pour définir le rappel. De manière générale, il existe deux types d'événements, l'un est ponctuel et l'autre périodique. La tâche ponctuelle se terminera après avoir été appelée, et la tâche périodique sera appelée en continu. Générez la prochaine tâche périodique en fonction de la période, ajoutez-la à la liste des tâches et réorganisez-la. A la fin de chaque appel de tâche, la tâche suivante est calculée et préparée.

1. Définir la minuterie

node-schedule permet une variété de règles pour implémenter le timing

1. Minuterie de style Cron

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ 一周的星期 (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── 月份 (1 - 12)
│    │    │    └────────── 月份中的日子 (1 - 31)
│    │    └─────────────── 小时 (0 - 23)
│    └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, OPTIONAL)
 
var schedule = require('node-schedule');
//当分钟为42时,执行一个cron任务
var j = schedule.scheduleJob('42 * * * *', function(){
  console.log('执行了!');
});

2. Minuterie de règle d'objet Date

var schedule = require('node-schedule');
var date = new Date('2017-09-26 22:00:00');
 
var j = schedule.scheduleJob(date, function(){
  console.log('执行了!');
});

3. Minuterie de règle d'instance RecurrenceRule

var schedule = require('node-schedule');
 
var rule = new schedule.RecurrenceRule();
rule.minute = 42;
 
var j = schedule.scheduleJob(rule, function(){
  console.log('执行了!');
});

Pour un usage spécifique. , veuillez consulter la documentation github https://github.com/node-schedule/node-schedule

Apprentissage recommandé : "Tutoriel vidéo Nodejs"

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