node.js에 대한 작업 스케줄러 라이브러리가 있습니까? [닫은]


155

특정 시간 (예 : 지금부터 x 시간이 아닌 15시 30 분)에 일부 기능이 실행되도록 예약 할 수있는 라이브러리와 같은 cron이 있습니까? 이런 종류의 라이브러리가 없다면 어떻게 구현해야합니까? 콜백을 1 초마다 호출하도록 설정하고 시간을 확인하고 시간 또는 예정된 작업을 시작해야합니까?


4
node-cron은 매우 좋은 옵션 인 것 같습니다
JtR

var schedule = require ( '노드 일정'); 가장 좋은 것입니다. 건배!!!
Saumyajit

답변:


122

node-cron 은 내가 설명한 것을 수행합니다.


4
cronjob 선언을 app.js / scripts.js에 작성합니까?
ArVan

않는 노드는-CRON Node.js를에서 편집 시스템 cron 작업에 당신을 허용? 실행중인 노드 프로세스에 종속됩니까? 아니면 주 프로세스가 종료 된 후에도 프로그램을 실행할 수 있습니까?
Ajar

5
@Ajar 아니오, nodejs 프로세스 종료 후 모든 작업이 손실됩니다. node-cron과 함께 배송되는 cron 테이블이 없습니다
Upvote

1
나는 그렇게 생각합니다 @ChrisC. 프레임 워크를 사용하지 않으면에 크론을 선언 app.js합니다. 에서 sails.js나는 그것을 할bootstrap
ArVan

2
@arVan 만약 당신이있는 거 관심, 실제로 작업을 시작 agenda여기에 워터 지원을 추가 : github.com/mikermcneil/agenda을 (말 그대로 단지 though- 다음 주에 의해 몇 가지 가능한 발전을해야 시작)
mikermcneil

44

node-schedule 노드에 대한 크론과 유사하고 크론과 유사하지 않은 작업 스케줄러.


2
이것은 때때로 혼란스러운 crontab 구문을 피하기 위해 관리되며 내 의견으로는 조금 더 읽기 쉽습니다.
Simon East

의제처럼 그것은 지속성을 제공하기 위해 솔기 0.1.13
drdrej

5
노드 일정은 지속성을 제공하지 않습니다. 문서에 따라 : Note that node-schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes.
Mike Hedman

34

의제 는 노드에 대한 경량 작업 스케줄링입니다. 도움이 될 것입니다.


1
의제는 지속 계층 (mongo)이있는 node-cron을 기반으로합니다. 위의 답변이 더 좋습니다.
drdrej

51
분명히 아젠다의 저자로서, 그것은 실제로 노드 크론을 기반으로하지는 않습니다.
Ryan

1
의제 라이브러리는 설정이 간단하고 사용자가 사용하기 쉬운 유일한 라이브러리입니다. Kudos @Ryan
Vimalraj Selvam

4
agenda일관성이없는 동작을 발견 했으며 사용하지 않는 것이 좋습니다. 미결 문제 및 PR을 확인하여 직접 전화하십시오.
Russbear

2
아젠다는 생산 준비가되어 있지 않습니다. 그것은이 메모리 누수 문제와 문제를 확인합니다. 여전히 많은 버그가 있습니다. 준비가되면 유망 해 보입니다.
Sebastian

15

later.js 는 꽤 좋은 JavaScript "scheduler"라이브러리입니다. Node.js 또는 웹 브라우저에서 실행할 수 있습니다.


3
이 글에서 몇 가지 제안을 시도했지만,이 모듈은 가장 사용하기 쉽고 직설적입니다. 감사합니다!
Gene Bo

12

kue : https://github.com/learnboost/kue를 사용하고 있습니다 . 꽤 좋습니다.

공식 기능 및 의견 :

  1. 지연된 직업.
    • 특정 시간에 작업을 실행하려면 해당 시간과 지금 사이의 밀리 초를 계산하십시오. job.delay (milliseconds)를 호출하십시오 (문서에 분이 잘못 표시되어 있습니다.) "jobs.promote ();"를 추가하는 것을 잊지 마십시오. 작업을 시작할 때
  2. 직업 이벤트 및 진행 pubsub.
    • 이해가되지 않습니다.
  3. 풍부한 통합 UI.
    • 굉장히 유용하다. 통합 UI에서 작업 상태 (완료, 실행, 지연)를 확인할 수 있으며 코드를 작성할 필요가 없습니다. UI에서 오래된 레코드를 삭제할 수 있습니다.
  4. 무한 스크롤
    • 때로는 작동하지 않습니다. 새로 고침해야합니다.
  5. UI 진행 표시
    • 시간이 많이 걸리는 작업에 적합합니다.
  6. 작업 별 로깅
    • 작업이 지연되었으므로 작업에 유용한 정보를 기록하고 나중에 UI를 통해 확인해야합니다.
  7. Redis 제공
    • 굉장히 유용하다. node.js 앱을 다시 시작하면 모든 작업 레코드가 그대로 있으며 예약 된 작업도 실행됩니다!
  8. 재시도 옵션
    • 좋은.
  9. 전체 텍스트 검색 기능
    • 좋은.
  10. RESTful JSON API
    • 잘 들리지만 결코 사용하지 않습니다.

편집하다:

  1. kue는 라이브러리와 같은 크론이 아닙니다.
  2. 기본적으로 kue는 반복적으로 실행되는 작업을 지원하지 않습니다 (예 : 매주 일요일).

6
Kue는 스케줄러가 아닌 작업 큐입니다.
Leonid Beschastny

1
@LeonidBeschastny Kue는 작업 대기열입니다. "일정한 기능을 특정 시간에 실행하도록 예약 할 수"있기 때문에 스케줄러이기도합니다.
빈스 위안

Kue의 직업은 지연 될 수 있지만 특정 시간으로 예정되어 있지는 않다고 생각했습니다.
Leonid Beschastny

@LeonidBeschastny 당신이 맞아요. Kue는 특정 시간에 작업을 예약하는 API를 제공하지 않습니다. 그러나 내가 언급했듯이 "특정 시간에 작업을 실행하려면 그 시간과 지금 사이의 밀리 초를 계산하십시오. job.delay (milliseconds)를 호출하십시오 (문서는 분을 잘못 표시합니다). .
Vince Yuan

1
Fruch

9

node-crontab을 사용하면 node.js에서 시스템 cron 작업을 편집 할 수 있습니다. 이 라이브러리를 사용하면 기본 프로세스 종료 후에도 프로그램을 실행할 수 있습니다. 면책 조항 : 나는 개발자입니다.


노드 서버가 재설정 되어도 지속됩니까?
jonperl


예, 작업이 지속됩니다.
Blago

GPL 라이센스를 받았기 때문에 상업 프로젝트에서는 사용할 수 없습니다.
drdrej

5
라이센스는 이제 MIT입니다.
Blago

8

timexe 를 사용할 수 있습니다

사용하기 간단하고 가벼우 며 종속성이 없으며 cron보다 향상된 구문을 가지며 밀리 초 단위의 해상도로 브라우저에서 작동합니다.

설치:

npm install timexe

사용하다:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(저는 저자입니다)


이것에 대한 예를 들어 주시겠습니까?
Alex

1
github의 예를 살펴보십시오 : github.com/paragi/timexe
Simon Rigét

2

나는 node-runnr의 auhor 입니다. 작업을 생성하는 매우 간단한 접근 방식이 있습니다. 또한 시간과 간격을 선언하기가 매우 쉽고 명확합니다. 예를 들어 10 분 20 초마다 작업을 실행하려면

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

매일 오전 10시와 오후 3시에 일을하려면

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

간단합니다. 자세한 내용은 https://github.com/Saquib764/node-runnr




0

이것은 모든 사람에게 적합하지는 않지만 응용 프로그램이 소켓을 통해 명령을 받도록 이미 설정된 경우 netcat을 사용하여 cron proper를 통해 명령을 실행할 수 있습니다.

echo 'mycommand' | nc -U /tmp/myapp.sock
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.