sourcecode

5분마다 Node.js 작업 예약

codebag 2023. 5. 28. 20:45
반응형

5분마다 Node.js 작업 예약

node.js가 처음입니다.5분마다 angodb를 쿼리하고 특정 데이터를 가져온 다음 socket.io 을 사용하여 구독 웹 클라이언트가 이 데이터에 액세스할 수 있도록 하려면 node.js가 필요합니다.저는 이미 socket.io 파트를 설정했고 물론 mongo, 저는 5분마다 node.js를 실행한 후 socket.io 에 게시하는 방법만 알면 됩니다.

이것을 위한 가장 좋은 해결책은 무엇입니까?

감사해요.

var minutes = 5, the_interval = minutes * 60 * 1000;
setInterval(function() {
  console.log("I am doing my 5 minutes check");
  // do your stuff here
}, the_interval);

해당 코드를 node_regular_job.js로 저장하고 실행합니다 :)

패키지를 사용할 수 있습니다.

var cron = require('node-cron');

cron.schedule('*/5 * * * *', () => {
  console.log('running a task 5 minutes');
});

관리해야 할 비동기 작업이 몇 가지 있는 경우 다음과 같이 수행해야 합니다.

(function schedule() {
    background.asyncStuff().then(function() {
        console.log('Process finished, waiting 5 minutes');
        setTimeout(function() {
            console.log('Going to restart');
            schedule();
        }, 1000 * 60 * 5);
    }).catch(err => console.error('error in scheduler', err));
})();

그러나 작업이 언제 시작되는지는 보장할 수 없지만, 작업을 실행하는 데 5분 이상 걸리는 경우에는 적어도 동시에 여러 번 작업을 실행하지는 않습니다.

여전히 사용할 수 있습니다.setInterval비동기 작업을 예약하는 경우 작업을 "처리 중"으로 플래그를 지정해야 합니다. 그러면 작업이 이전 완료 전에 두 번째로 예약되는 경우 논리가 아직 처리 중인 작업을 처리하지 않기로 결정할 수 있습니다.

@alessioalex는 코드에서 작업을 제어할 때 올바른 답을 제공하지만 다른 사람들은 CLI 솔루션을 찾다가 실패할 수 있습니다.당신은 이길 수 없어요.

예를 들어, 그냥 도망가세요.sloth 5 "npm start"달리다npm start5분마다

프로젝트에는 예가 있습니다.package.json사용.

node.js에는 당신이 이것을 하는 것을 도울 많은 스케줄 패키지가 있습니다. 당신의 필요에 따라 그것들 중 하나를 선택하세요.

다음은 패키지 목록입니다: 의제, 노드 일정, 노드-크론, 브리, 크론, 불

언급URL : https://stackoverflow.com/questions/8011962/schedule-node-js-job-every-five-minutes

반응형