2014-04-24 7 views
2

Rails 앱에서 Resque 1.25.2 버전을 사용하고 있습니다.Resque worker가 신호에 응답하지 않습니다.

Resque.workers을 통해 가져온 모든 작업자에 대해 인스턴스 메서드 pause_processing과 그 반대로 unpause_processingResque::Worker 클래스를 호출하려고했습니다. 그러나 작업자는 여전히 모든 대기열에 동적으로 추가 된 새로운 작업을 계속 처리합니다. instance.paused?을 통해 상태를 확인하면 모든 작업자가 true을 반환했습니다.

실제로 백그라운드에서 실행중인 작업자를 제어 할 수 있는지 확실하지 않습니다.

지금까지 내가 pause_processing, unpause_processingshutdown이 Resque 노동자에 USR2CONTKILL 신호를 보내는 것과 같은 일을 이해할 수있다.

나는 사소한 것이 없거나 근로자를 관리하는 다른 방법이 있습니다.

+0

누구나 나를 올바른 방향으로 향하게 할 수 있습니까? – user2512324

답변

3

이것은 작업자의 완전히 다른 인스턴스에서이 메서드를 호출하고 상태를 수정하기 때문입니다. 당신이 can see로하는 모든 것은 인스턴스 변수의 값으로 설정됩니다. Resque.workers에 전화하면 다른 작업 프로세스에서 실행중인 작업자의 인스턴스가 아닌 모든 작업자의 인스턴스가 생성됩니다. Resque에서는 실행중인 작업자의 상태를 원격으로 수정할 수 없습니다. Resque 작업자의 상태를 바깥에서 변경하려면 신호로 상호 작용해야합니다. 방법을 호출하는 중이라면 신호를 보내지 않을 것입니다.