2017-03-31 15 views
1

rufus-scheduler를 사용하여 일부 태스크를 예약하는 Rails 애플리케이션이 있습니다. 스케줄러는 Rails 애플리케이션을 시작하는 유니콘 스크립트의 after_fork에서 초기화됩니다 (참조 : https://gist.github.com/jkraemer/3851917).rufus-scheduler가 이미 내 Rails 애플리케이션에서 실행 중인지 확인하는 방법

최근에는 유니콘 스케줄러 스레드를 호스팅하는 유니콘 프로세스가 여전히 활성화 된 상태에서 유니 코드 스케줄러 스레드가 죽은 시나리오가 발생했습니다. 이로 인해 예고없이 상당한 시간 동안 스케줄러가 중단됩니다.

다음과 같은 시나리오를 처리하도록 경고 및 모니터링 시스템을 설정하고 싶습니다. 1. 스케줄러 스레드가 종료/중단 될 때마다 경고를 던집니다. 2. Rails 프로세스가 실행중인 경우 스케줄러를 다시 시작하십시오.

아마도 cron 작업을 통해 스케줄러의 실행 상태를 알고 자동 재시작을 처리하는 적절한 방법은 무엇입니까?

답변

1

rufus-scheduler를보기 위해 cron 작업을 가져 오는 경우 rufus-scheduler를 삭제하고 모든 예약에 Whenever을 사용하면 어떨까요? 따라서 100 % Crond 솔루션을 갖게됩니다.

또 다른 대안으로는 a) Rails 응용 프로그램 b) rufus-scheduler 일정을 호스팅하는 별도의 프로세스 (Rails 응용 프로그램의 "일정 전용"버전 일 수 있음)를 관리하십시오. blog post). God도 있습니다.

rufus-scheduler에서 영감을 얻은 시계 인 Clockwork을 보면 detail 하나의 응용 프로그램/여러 프로세스 시나리오가 있습니다.

그런 다음 로그를보고 오류가 발생하면 알려주는 다양한 도구를 살펴볼 수 있습니다.

는 업데이트 :

아마이 요점은 도움이 될 수 : https://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2

+1

감사 제안의 세부 목록을 많이. 그들을 시험해보아야한다. 1 분주기 아래에서 특정 작업을 예약해야하므로 100 % cron 일정을 사용할 수 없습니다. – elixir

+0

God 스크립트를 통한 모니터링의 경우 응용 프로그램 외부에서 스케줄러 인스턴스에 어떻게 액세스 할 수 있습니까? – elixir

+0

직접 액세스 권한을 구현해야합니다. – jmettraux