2011-08-11 5 views
5

heroku cedar 스택에서 resque를 성공적으로 실행하고 인터페이스를 레일에 마운트했습니다.Heroku 삼나무 스택에 재 저장 작업자가 종료 한 후에도 작업자 수는 여전히 존재합니다.

내가 작업자를 시작할 때, 모든 것이 잘 작동합니다. 작업자가 작업을 처리합니다. 하지만 제가 직원을 죽이면 Resque는 여전히 그 직원이 사용 가능하다고 생각합니다. 내가 다른 노동자를 시작할 때, 2 명의 노동자가 있다고 생각하지만 실제로는 단 하나의 노동자 만 있다고 생각합니다.

나는 또한 여기에 양식을 알립니다. http://devcenter.heroku.com/articles/ps heroku는 작업자를 죽일 때 SIGTERM을 보내고 종료하지 않으면 SIGKILL을 보냅니다.

여기 내 프로세스가 10 초 종료하는 다음 더 걸리는 것을 볼 내 작업자 로그

2011-08-11T02:32:45+00:00 heroku[worker.1]: Starting process with command `bundle exec rake resque:work QUEUE=*` 
2011-08-11T02:32:46+00:00 heroku[worker.1]: State changed from starting to up 
2011-08-11T02:33:58+00:00 heroku[worker.1]: State changed from up to stopping 
2011-08-11T02:34:00+00:00 heroku[worker.1]: Stopping process with SIGTERM 
2011-08-11T02:34:09+00:00 heroku[worker.1]: Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM 
2011-08-11T02:34:09+00:00 heroku[worker.1]: Stopping process with SIGKILL 
2011-08-11T02:34:11+00:00 heroku[worker.1]: Process exited 

입니다. 작업자 작업에 레일 환경을로드하기 때문에이 작업을 수행 할 수 있습니까?

이 난 그냥 문제를 발견 내 레이크 작업 lib/tasks/resque.rake

require "resque/tasks" 

task "resque:setup" => :environment 

답변

5

, 레이크 작업에 ENV 전달이 앞으로 일어날 수 있습니다. QUEUE='*'을 전달할 때와 같습니다. 여기

https://github.com/defunkt/resque/issues/319#issuecomment-1789239

보다 완벽한 문제이며, 문제는 resque는 모든 가야을 실행할 수 있도록하는, https://github.com/defunkt/resque/issues/368

모든 내 임시 패치에 원반 던지기 아직.

https://github.com/yulrizka/resque

+0

당신은 또한에서 정리할 수 있습니다 redis에 연결하고 .del ('workers')을 실행하여 콘솔 – Bob

2

ahmy, 당신의 솔루션을 기반으로

, 나는 resque를 분기 포함하지 않는 한 함께했다.

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
end 

을하고 Profile에 넣고 :

나는 resque.rake에 넣고

worker: bundle exec rake resque:work 

Gemfile에 넣고 :

gem 'resque', :git => 'git://github.com/defunkt/resque.git'