2009-10-28 3 views
7

지연된 작업을 사용하여 백그라운드 작업을 관리하고 있습니다.
그러나 정기적 인 간격으로 실행해야하는 작업이 있습니다. 매시간, 매일 또는 매주 예를 들어.보통 지연된 작업

지금 당장은 작업을 실행할 때마다 1 일/주/달로 실행되도록 새 작업을 만듭니다.

그러나 나는 그것을 정말로 좋아하지 않습니다. 어떤 이유로 든 작업이 완전히 실행되지 않으면 다음 작업을 만들지 않고 작업 실행을 잃을 수 있습니다.

정규 업무 목록이 올바른지 확인하기 위해 레일스 애플리케이션에서 (지연된 작업으로) 그런 종류의 것을 어떻게 관리합니까?

답변

5

당신이 크론에 액세스 할 수있는 경우, 내가보기 엔 당신은 실행하고 죽은 간단한 루비에서 어떤 주파수에서 원하는 및 소모품은이 점을 변환하는 작업을 긁어 때마다 지정할 때마다

http://github.com/javan/whenever

추천 crontab을 수정하고 시스템의 crontab을 업데이트하십시오.

자주 사용하는 cron에 액세스 할 수 없다면 (우리가 Heroku를 사용하고 있기 때문에) DJ를 사용하는 것이 좋습니다.

몇 가지 옵션이 있습니다.

  1. 당신이하고있는 것을하십시오. DJ는 각 작업을 특정 횟수만큼 다시 시도하므로 거기에 약간의 관대함이 있습니다.

  2. 다음 DJ 작업을 생성하는 코드를 보장 블록에 넣어 예외 또는 다른 나쁜 이벤트가 발생해도 생성되는지 확인하십시오

  3. 주기적으로 실행되는 다른 DJ를 만들어 적절한 DJ가 있는지 확인하고 그렇지 않은 경우 DJ를 만듭니다. 물론 모니터와 실제 DJ가 둘 다 동일한 환경에서 실행되기 때문에 다른 옵션과 마찬가지로 오류가 발생하기 쉽습니다.

+0

언제나 좋습니다. 뭔가를 바꿀 때 crontab을 새로 고침 할 수있는 몇 가지 작업이 있습니다 (동적으로 작업을 변경해야 함). 감사 :) –

1

이러한 유형의 작업에 cron을 사용하지 않는 특별한 이유가 있습니까? 어쩌면 rufus-scheduler과 같은 좀 더 루비 같은 것이고 이것은 매우 easy to use이며 매우 신뢰할 만합니다.

대기열이 필요하지 않은 경우 이러한 도구를 사용하는 것이 좋습니다.

+1

글쎄 나는 이미 지연된 일자리를 가지고있다. 그리고 나는 두 번째 발사를 피하고 싶습니다. –

+0

rufus-scheduler로 새로운 데몬을 실행할 필요가 없습니다. 간단한 루프 또는 EventMachine을 사용하여 실행할 작업을 확인합니다. cron은 데몬이지만 일반적으로 어쨌든 실행해야합니다. –

관련 문제