2012-09-07 36 views
1

我有一個工頭腳本啓動一些獨立的紅寶石應用程序的工人。這裏的腳本Resque工人工頭未能啓動工人

工頭腳本 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 884.我測試過這一點,它總是PID +2比原來resque工人。

當我從沒有領班的終端直接運行bundle exec命令時,該命令執行得很好。有什麼我失去了工頭腳本?

回答

2

顯然,在運行BACKGROUND = true時,resque工作者得到守護進程,因此原始pid被刪除,並且一個新進程被作爲工作者的孤立進程跨越。

不過,使用工頭創建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