scheduler.every '1m', :overlap => false, :mutex => "my_lock" do
something...
end
이 스케줄러의 작업은 이전 실행이 완료 될 때까지 기다리거나 이전 실행이 아직 실행 중임을 발견하면 건너 뛸 수 있습니까?겹치는 변수 false와 뮤텍스 변수가 존재한다면 Will Rails Rufus 스케줄러 작업은 건너 뜁니 까?
scheduler.every '1m', :overlap => false, :mutex => "my_lock" do
something...
end
이 스케줄러의 작업은 이전 실행이 완료 될 때까지 기다리거나 이전 실행이 아직 실행 중임을 발견하면 건너 뛸 수 있습니까?겹치는 변수 false와 뮤텍스 변수가 존재한다면 Will Rails Rufus 스케줄러 작업은 건너 뜁니 까?
단일 프로세스 사례와 다중 프로세스 사례의 두 가지 경우를 고려해야합니다.
다중 프로세스 케이스는 여러 개의 Ruby 프로세스를 사용하기 위해 만들어진/조정 된 서버를 Rails에서 사용할 때 발생합니다.
서버, 나는 등등에 WEBrick, 유니콘, 승객, 푸마, ... 두 경우 모두
을 의미, 중복은 뮤텍스 전에 간주됩니다.
단일 프로세스의 경우 overlap => false
이 먼저 실행되고 스케줄러는 들어오는 겹치는 작업을 건너 뜁니다. 뮤텍스는 (작업이 겹치지 않는 경우) 고려되며 뮤텍스가 동일한 작업의 인스턴스 또는 동일한 뮤텍스를 가리키는 작업의 인스턴스에 의해 해제 될 때까지 작업을 대기 상태로 만들 수 있습니다. 여러 프로세스 경우
overlap
및
이을 표시
mutex
힘의 스케줄러를 가지고 결국,하지만이 있기 때문에 수 ...
여러 개의 Ruby 프로세스를 제공하는 서버가 있고 해당 작업에서 단일 rufus-scheduler를 사용하려면 https://github.com/jmettraux/rufus-scheduler#lockfile--mylockfiletxt 및 https://github.com/jmettraux/rufus-scheduler#scheduler_lock을 읽어야합니다. 이 주제에 전념하는 여러 가지 스택 오버 플로우 질문.