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.
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!