이 글은 Node에서 예약된 작업을 구현하는 방법을 소개합니다. 도움이 되길 바랍니다!
현재 이러한 요구가 있습니다. 각 사용자는 예약된 푸시를 사용자 정의할 수 있으며 기존 서버에서 시간을 설정하는 대신 언제든지 수정할 수 있습니다. 예약된 작업을 실행합니다. [추천 학습: "nodejs Tutorial"]
예약된 작업 주기를 알면 Linux Crontab 예약 작업을 구현할 수 있습니다. node.js에는 이미 비교적 성숙한 솔루션이 있습니다. 아래에서는 제가 직접 배운 Node 예약작업 솔루션을 소개하겠습니다.
egg는 개발자가 예약 작업을 우아하게 작성할 수 있는 메커니즘 세트를 제공합니다. https://eggjs .org/zh-cn/basics/schedule.html 여기서 구체적인 사용법은 자세히 설명하지 않지만 구성 사용법은 간략하게 설명하겠습니다.
1. 정적 예약 작업, 즉 예약 주기에는 하드 코딩된 처리 논리가 있습니다.
2. 상대적으로 더 유연한 예약 작업을 동적으로 구성합니다. 개발자는 구성 파일을 통해 예약된 작업 주기를 제어할 수 있습니다.
3. 코드를 통해 예약된 작업을 수동으로 트리거할 수 있습니다. 일부 로직을 기반으로 예약된 작업을 실행할지 여부를 결정할 수 있습니다.
위의 세 가지 점에서 egg가 제공하는 예약된 작업은 사용자가 스스로 타이밍 기간을 구성해야 하는 요구 사항을 충족할 수 없으므로 데이터를 쿼리하여 노드 일정 라이브러리도 다른 솔루션을 찾을 수 있다는 것을 발견했습니다. 예약된 작업 기능을 제공합니다.
node-schudule https://www.npmjs.com/package/node-schedule 문서를 살펴본 후 사용법은 다음과 같습니다.
const schedule = require('node-schedule'); const job = schedule.scheduleJob('42 * * * *', function(){ console.log('The answer to life, the universe, and everything!'); });
예, 정의 이후 지원합니다. 타이밍 주기는 우리의 요구 사항을 충족할 수 있고 우리의 선택이 될 수 있습니다.
계속해서 다른 개발자의 사용 기사를 찾아보니 node-schedule과 관련된 문제 기록을 발견했습니다. 간단히 말해서 타이머가 예정된 시간에 실행되었습니다. 2번 구체적인 질문은 원문을 참고해주세요: https://cnodejs.org/topic/5b58414b8d66b90b2b7384a7. 이는 확률이 낮은 문제로, 저희의 필요로 인해 타이머가 두 번 실행되어 결과에 영향을 미치지 않으므로 관심 있는 학생들은 사용에 방해가 되지 않습니다. 버그를 테스트합니다.
마지막으로 저희 자체 프로젝트의 예정된 과제 해결 방법을 요약해두었습니다. 관심 없는 학생들은 건너뛰셔도 됩니다.
저희 백엔드는 egg 프레임워크를 사용하므로 최종 솔루션은 에이전트 프로세스에 노드 스케줄 타이머를 추가하는 것입니다. 현재로서는 사용자 수가 많지 않습니다. , 당분간 이 솔루션만 생각하고 있으며, 볼륨을 늘리면 백엔드를 분산 배포할 수도 있습니다.
이것도 문제가 될 것이고, 단일 프로세스에서 실행하는 것도 볼륨이 크면 문제가 될 것이며, egg 자체는 에이전트 프로세스에서 비즈니스 관련 일을 너무 많이 하는 것을 권장하지 않습니다. 또 중요한 점은 에이전트가 보조 프로세스라는 점입니다. 일부 공개 작업은 에이전트에서 완료됩니다. 잡히지 않는 오류가 발생하면 에이전트가 종료되지 않고 다시 시작되므로 내결함성 처리가 잘 수행되어야 합니다.
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 Nodejs에서 예약된 작업을 수행하는 방법에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!