문제를 해결하는 열쇠는 갈퀴입니다.
Resque에는 세 가지 레이크 작업이 포함됩니다. 레이크 파일을 사용하려면 'resque/tasks'
이 필요합니다. 당신이 명령의 목록은 레이크을 물어 보면 당신이 Resque에 포함 된 세 가지 작업을 볼 수 있습니다 :
rake resque:failures:sort # Sort the 'failed' queue for the redis_multi_queue failure backend
rake resque:work # Start a Resque worker
rake resque:workers # Start multiple Resque workers
당신이 찾고있는 사람이 (하나의 작업자를 시작하는) resque:work
입니다. QUEUE
환경 변수를 사용하여 대기 할 대기열을 지정합니다. 따라서 작업자를 시작하는 것은 다음과 같습니다.
QUEUE=your_queue_name rake resque:work
.
또는 QUEUES=*
을 사용하여 모든 대기열을들을 수 있습니다.
편집 :
다음은 좀 더 완벽한 예입니다. rakefile
라는 파일을 만듭니다
require 'resque/tasks'
require 'resque'
class Worker
@queue = :default
def self.perform(my_arg)
puts my_arg
end
end
task :hello do
Resque.enqueue(Worker, 'hello')
end
그러던 어느 터미널 유형 TERM_CHILD=1 QUEUE=default rake resque:work
인치 그러면 기본값 인이라는 대기열을 보면서 작업자가 시작됩니다. 작업이 perform
클래스 메소드로 전달하는 인수를 출력합니다.
두 번째 터미널 유형은 rake hello
입니다. 이렇게하면 클래스의 작업을 대기열에 추가하고 hello
문자열을 전달합니다 (Worker
클래스의 메소드로 전달됨). Worker
에있는 @queue
속성을보고 default
대기열로 푸시하는 것을 알고 있습니다.
작업자를 시작한 터미널에 hello이 인쇄되어 있습니다.
이 예제는 유용하지 않으며, 모든 것을 rakefile에 넣지는 않겠지 만, 수정을 시작하고 자신 만의 빌드를 시작하는 것이 좋은 출발점이라고 생각합니다.
감사합니다. @wkjagt. 그것은 당신이 나의 문제를 언급하고 해결했던 것과 똑같이 일했습니다. – henritroyat
사람들이'rake resque : work TERM_CHILD = 1 QUEUE = default' 일 때'TERM_CHILD = 1 QUEUE = 기본 갈퀴 다시 만들다 : work'라고 입력하는 이유는 무엇입니까? 이것은 오래된 구문입니까?문서가'rake resque : work' 이후에 인수의 순서를 뒤집어서 앞에 놓기 때문에 나는이 작업에 어려움을 겪었습니다. –