2012-09-07 3 views
1

standman ruby ​​app에서 worker를 시작하는 foreman 스크립트가 있습니다. 나는 이것이 내가 얻을 출력되는 스크립트를 실행하면 다음 스크립트Resque worker 포먼이 worker를 시작하지 못함

감독 스크립트 worker: bundle exec rake resque:work BACKGROUND=true QUEUE=image VERBOSE=true

입니다.

$ foreman start 
22:00:38 worker.1 | started with pid 882 
22:00:38 worker.1 | exited with code 0 
22:00:38 system | sending SIGTERM to all processes 
SIGTERM received 

프로세스가 종료 한 것 같다하지만 난 ps -eaf | grep resque 볼 때 나는이 테스트 및 원본보다는 항상 PID이 한 PID 884.와 함께 실행하는 resque 노동자를 보여줍니다 로그인합니다.

포먼이없는 터미널에서 번들 exec 명령을 실행할 때 명령이 올바르게 실행됩니다. 감독님 스크립트에 실종 된 것이 있습니까?

답변

2

따라서 BACKGROUND = true를 실행하면 resque 작업자가 데몬으로 처리되므로 원본 pid가 삭제되고 새로운 pid가 작업자의 고아 프로세스로 스팬됩니다.

작업자 중 하나가 데몬이되면 작업자가 모든 프로세스를 종료하고 2 인이 아닌 하나의 데몬화된 작업자 만 만들어지기 때문에 장래 직원 2 명을 만들 때 문제가 있습니다.

0

포어 맨에서 모든 프로세스를 실행해야하는 직원과 함께 작업자를 대몬으로해서는 안됩니다. 여러 노동자를 원한다면, 단순히이 같은 것을 사용

image_worker: bundle exec rake resque:work QUEUE=image VERBOSE=true 
other_worker: bundle exec rake resque:work QUEUE=other VERBOSE=true 

이 같은 큐에 여러 노동자를 시작하려면 :

foreman start -m image_worker=2 
관련 문제