programing

다른 간격의 작업을 허용하는 Nodejs 스케줄러가 필요합니다.

stoneblock 2023. 10. 6. 20:51

다른 간격의 작업을 허용하는 Nodejs 스케줄러가 필요합니다.

다양한 간격으로 여러 작업을 예약할 수 있는 노드 작업 일정을 찾고 있습니다.예를 들어.

  • 함수 A를 30초마다 호출합니다.
  • 함수 B를 60초마다 호출합니다.
  • 함수 C를 7일마다 호출합니다.

저 또한 그 과정을 시작하고 멈출 수 있기를 원합니다.

지금까지 살펴봤습니다.

  • 나중에 - 구문이 나를 혼란스럽게 합니다. 또한 당신은 한 달 이상의 작업을 예약할 수 없습니다.

  • 의제- 가장 유망한 것 같지만, 데이터베이스 기능에 대해 혼란스럽습니다.

  • 타임플랜 - 너무 간단해서 시작과 중단이 불가능합니다.

나는 후자의 구문이 혼란스럽다고 생각합니다.

추천합니다.예를 들어 크론 패턴을 사용하여 작업을 실행할 수 있습니다.

'* * * * * *' - runs every second
'*/5 * * * * *' - runs every 5 seconds
'10,20,30 * * * * *' - run at 10th, 20th and 30th second of every minute
'0 * * * * *' - runs every minute
'0 0 * * * *' - runs every hour (at 0 minutes and 0 seconds)

하지만 더 복잡한 일정도 있습니다.

'00 30 11 * * 1-5' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.

샘플 코드: 10분마다 작업 실행:

var cron = require('cron');
var cronJob = cron.job("0 */10 * * * *", function(){
    // perform operation e.g. GET request http.get() etc.
    console.info('cron job completed');
}); 
cronJob.start();

node-cron wiki에서 더 많은 예를 찾을 수 있습니다.

cron 구성에 대한 자세한 내용은 cron wiki에서 확인할 수 있습니다.

저는 그 도서관을 여러 프로젝트에서 이용해 왔는데, 그 일이 잘 되어 갑니다.도움이 되었으면 좋겠습니다.

노드-크론어젠다를 사용했습니다.

node-cron는 매우 간단한 라이브러리로, 크론탭과 같이 매우 기본적이고 이해하기 쉬운 API를 제공합니다.그것은 어떠한 구성도 필요하지 않고 그냥 작동합니다.

var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){...});
myJob.start();

의제는 매우 강력하고 훨씬 더 복잡한 서비스에 적합합니다.생각해보세요. 수백만 개의 작업을 실행해야 합니다. 의제가 최선의 선택일 것입니다.

참고: 의제를 사용하려면 Mongodb가 필요합니다.

var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}});
agenda.every('*/3 * * * *', 'delete old users');
agenda.start();

가장 좋은 순위는.

1.노드-

2.나중에

3.크론탭

노드-schedule의 샘플은 다음과 같습니다.

var schedule = require("node-schedule");
var rule = new schedule.RecurrenceRule();
//rule.minute = 40;
rule.second = 10;
var jj = schedule.scheduleJob(rule, function(){
    console.log("execute jj");
});

아마도 노드 모듈에서 답을 찾을 수 있을 것입니다.

선언 인터페이스를 제공하는 모멘트 시간을 사용하여 setInterval에 래퍼를 제공하는 노드 모듈을 작성했습니다.

npm 설치 간격-

var every = require('every-moment');

var timer = every(5, 'seconds', function() {
    console.log(this.duration);
});

every(2, 'weeks', function() {
    console.log(this.duration);
    timer.stop();
    this.set(1, 'week');
    this.start();
});

https://www.npmjs.com/package/every-moment

https://github.com/raygerrard/every-moment

nodeJS 기본값

https://nodejs.org/api/timers.html

setInterval(function() {
    // your function
}, 5000);

timexe라는 작은 모듈을 작성했습니다.

  • 단순하고 신뢰할 수 있는 작은 코드이며 종속성이 없습니다.
  • 해상도는 밀리초 단위이며 시간이 지남에 따라 높은 정밀도를 가집니다.
  • Cron은 좋으나 호환되지 않음(역순서 및 기타 개선사항)
  • 저도 브라우저에서 일합니다.

설치:

npm install timexe

용도:

var timexe = require('timexe');
//Every 30 sec
var res1=timexe(”* * * * * /30”, function() console.log(“Its time again”)});

//Every minute
var res2=timexe(”* * * * *”,function() console.log(“a minute has passed”)});

//Every 7 days
var res3=timexe(”* y/7”,function() console.log(“its the 7th day”)});

//Every Wednesdays 
var res3=timexe(”* * w3”,function() console.log(“its Wednesdays”)});

// Stop "every 30 sec. timer"
timexe.remove(res1.id);

timexe 작업 배열에서 항목을 직접 제거/재 adding하여 시작/중지 기능을 달성할 수 있습니다.하지만 그것은 급행 기능이 아닙니다.

언급URL : https://stackoverflow.com/questions/20499225/i-need-a-nodejs-scheduler-that-allows-for-tasks-at-different-intervals