문제
백그라운드 작업을 구현할 수있는 방법이있는 경우 Workers Pool에서는 궁금합니다.방향을 보여줄 수 있습니까? 나는 이것을 위해 패키지를 쓰는 것에 대해 생각하고 있습니까?
해결책
2019 업데이트
아무 것도 패키지를 쓰는 것에 대해 생각하기 전에 먼저 필요한 것을 수행하는 기존 패키지가 있는지 먼저보십시오. Meteor World에서는 "직업 / 대기열 / 작업 / 작업자 관리 / 예약"패키지의 대기를 찾고 동일한 검색어로 NPM에서 찾는 것을 의미합니다. 또한 요구 사항을보다 정확하게 정의해야합니다.
- 지속성을 원하십니까? 아니면 메모리 내 솔루션이 작동합니까?
- 다른 컴퓨터에 작업을 배포 할 수 있도록 원하십니까?
유성 - 특정
- 취업 콜렉션
- 신뢰할 수있는 (나는 생산에서 2014 년에 그것을 사용했습니다. 시작 됨),하지만 현재 유지 보수 모드입니다. 영구 작업을 어디서나 실행할 지속성 작업을 예약 할 수 있습니다. - Stevejobs - 강력한 유성 도구
- Littledata : synched-cron - meteor의 간단한 cron 시스템. 그것은 여러 프로세스 간의 동기 작업을 지원합니다. "
버려진 패키지 :
- artwells : 대기열 - 우선 순위, 스케줄링, 로깅, 재 - 대기열. MongoDB가 뒷받침하는 대기열. Last 코드 커밋 : 2015-Oct.
- Super Basic Cron 패키지 : EasyCron . 마지막 업데이트 : 2015 년 12 월.
- 차등 : 근로자 - 비동기 작업에서 일하는 헤드리스 노동자 유성 프로세스를 산란하십시오. 마지막 코드 커밋 : Jan 2015
- cron ( 2015 년 이후 )
- PowerQueue - 버려진 2014 년 이후 . 대기열 Async 태스크, 스로틀 리소스 사용법, 재시도가 실패했습니다. 하위 대기열을 지원합니다. 스케줄링 없음 . 테스트가 없지만 Nifty Demo . 재귀 호출을 사용하는 것으로 인해 오랫동안 실행에 적합하지 않습니다.
npm 패키지
유성은 NPM 패키지를 몇 년 동안 직접 사용할 수 있었기 때문에이 질문은 job / worker / queue 관리 패키지 npm. 지속성을 상관하지 않으면 :
- async "는 일반적인 '기능적'용의자 (
map
, generacodicicetagcode,reduce
,filter
...)뿐만 아니라 비동기 제어 흐름 (each
,parallel
,series
...) " - D3 대기열 - 미니멀 리즘, D3 작성자 Mike Bostock
Meteor는 이미 MongoDB를 사용하기 때문에 MongoDB에 대한 지속성이있는 작업 스케줄링 패키지를 사용하는 것이 유리할 수 있습니다. 가장 강력하고 인기있는 것은 Agenda 이지만 불행히도 몇 달 안에 유지되지 않았습니다. 이슈
의 중요한 백 로그가 있습니다."nofollow noreferrrer"> Redis 가 뒷받침하는 종속성을 기꺼이 추가하려는 경우 더 많은 선택 사항이 있습니다 : < / P>
- Bull - 노드를위한 가장 많은 기능을 갖춘 작업 대기열 솔루션, Redis 에 의해 뒷받침됩니다
- 꿀벌 - 간단하고 빠르고 강력합니다. 메모리 누수가 황소 전시 로 고통받지 않습니다.
MongoDB와 마찬가지로 Redis는 또한 고 가용성을 제공합니다 (Redis Sentinel을 통해). 여러 작업자 컴퓨터간에 작업을 배포하려는 경우 동일한 Redis 서버에서 모두를 가리 킵니다.
다른 팁
특정 간격이나 날짜에 대한 작업을 예약하는 데 사용할 수있는 CRON 작업을 기반으로하는 패키지가 있습니다.다음은 패키지입니다 : https://atmosphere.meteor.com/package/cron 그리고 해당 패키지의 소스를 살펴 보도록 요청하면 단순히 사용하는 것입니다 :
Meteor.setInterval( ... , delay );
데이터베이스에 작업을 저장 한 다음 시작 중에 간격으로로드 한 다음 올바른 트랙에있을 것입니다.
유성과 관련된 무언가를 찾고 있다면 스티브 잡스 (Steve Jobs)라는 새로운 패키지가 있습니다.메소드를 호출하는 것처럼 배경 작업을 쉽게 실행할 수 있습니다.
작업 실행, 실패한 작업을 다시 시도하는 등 모든 표준 기능이 있습니다.GitHub에서 더 많은 것을 배울 수 있습니다 :
나는 적절한 지원이 그들의 로드맵에 있다고 추측하고 있지만, 그 동안 나는 setInterval
를 통해 해피 방식으로가는 것을 관리 할 수있었습니다. cron-tick 패키지를 참조하십시오.