2013-01-23 3 views
0

RoR에서 레이크 작업 또는 루비 코드를 다른 시간에 두 번 실행하는 방법이 있는지 알고 싶습니다. 예를 들어, 사용자가 등록하면 3 일 후에 작업을 실행 한 다음 일주일 후 동일한 작업을 실행하지만 더 이상 처리하지 않습니다 ('프로세스 중지'). 나는 Resque, Stalker, Starling 등과 같은 crontab과 보석을보고 있었지만이 보석이 나를 도울 수있는 분명한 생각이 없습니다. 나는 각 사용자에 대한 데몬을 실행하고 작업 실행을 계산할 것을 생각하고 있습니다. 문제는 데몬이 리소스를 "먹는"모든 시간 동안 활성화된다는 것입니다. 가능한 한 최소한의 리소스를 사용하는 방법이 있습니까? 헤로 쿠에서 나중에 이걸 실행하고 싶습니다.cron으로 레이크 작업을 두 번 실행하는 방법은 무엇입니까?

+0

데몬의 문제점은 지난 1 주일, 3 일 등의 시간이 얼마 남았는지 확인해야한다는 것입니다. – Dagosi

답변

1

있습니다 .. 때마다 크론을 시도하고 .. 물건을하고있는 레이크 작업을 작성하고 데이터베이스에 약간의 트리거 필드를 만들 때 어떻게 레이크 작업은 그의 행동을해야 레코드에 날짜 열이있는 것 (예 : first_reminder_sent_at, user_responed_at, week_reminder_sent_at). 이 경우 첫 번째 항목의 날짜, 사용자의 응답 및 일주일 후 항목에 대한 날짜입니다.

레이크 작업을 호출하는 cron 작업 만들기 - 3 일이 넘은 모든 사용자를 보려면 < 1 주일, 사용자가 응답하지 않고 날짜가 설정되지 않았습니다. 백그라운드 작업 대기열. 작업은 메일 (또는 작업이 무엇이든간에)을 보내고 레코드의 날짜 필드를 설정합니다.

레이크 작업을 호출하는 Cron 작업 - 사용자가 응답하지 않고 날짜가 설정되지 않은 1 주일 이상 된 모든 사용자를 봅니다. 미리 알림을 보내고 백그라운드 작업으로 날짜를 설정하십시오.

0

Posix 시스템에는 at 명령이 있습니다.이 명령은 나중에 한 번 작업이 실행되도록 예약 된 간단한 방법입니다. 응용 프로그램 기반 대기열 메커니즘을 사용하여 나중에 다른 작업에서 설명한대로 나중에 작업 일정을 계획하는 데는 아무 문제가 없습니다. at은 호스트마다 다르므로 클러스터를 실행중인 경우에는 적합하지 않을 수 있습니다. 특히 호스트가 일시적 일 수있는 경우에는 적합하지 않을 수 있습니다.