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 start
5분마다
이 프로젝트에는 예가 있습니다.package.json
사용.
node.js에는 당신이 이것을 하는 것을 도울 많은 스케줄 패키지가 있습니다. 당신의 필요에 따라 그것들 중 하나를 선택하세요.
다음은 패키지 목록입니다: 의제, 노드 일정, 노드-크론, 브리, 크론, 불
언급URL : https://stackoverflow.com/questions/8011962/schedule-node-js-job-every-five-minutes
'sourcecode' 카테고리의 다른 글
xargs로 여러 명령 실행 (0) | 2023.05.28 |
---|---|
UserInterfaceState.xcuserstate를 무시할 수 없음 (0) | 2023.05.28 |
python-m 플래그의 의미 (0) | 2023.05.28 |
프로세스 권한을 프로그래밍 방식으로 승격하시겠습니까? (0) | 2023.05.28 |
WPF: 열/행 여백/패딩이 있는 그리드? (0) | 2023.05.28 |