2011-08-18 49 views
0

我有解析流API和輸入數據到數據庫rake任務。流媒體API是實時供稿,並且耙式任務應持續運行以使實時數據進入數據庫。一次調用的rake任務將不斷運行並解析數據。現在我已經開始了rake任務並且正在運行。問題是,如果我關閉終端或重新啓動服務器,耙子任務將被停止。所以,我想在Linux腳本(類似用於啓動或停止Apache服務器的一個),其執行以下操作:使用Linux腳本,使運行連續rake任務(啓動,停止等)

1. start the rake task by calling rake command (rake parse:stream) from the RAILS-ROOT (application directory of Rails app) 
2. stop the rake task by killing the process. 
3. start the rake task automatically when the server reboots. 

我不熟悉Linux腳本,我不知道從哪裏開始。我正在使用Ubuntu服務器。誰能幫我?

回答

1

你需要運行腳本作爲一個守護進程。當我創建這種啓動腳本時,我通常會創建2個文件,一個保留在/etc/init.d中,另一個處理start/stop/status/restart命令,另一個實際執行該任務並被第一個腳本調用。

Here是一個解決方案,雖然守護進程腳本是用perl編寫的,但您只想運行一些命令行,所以守護perl腳本可以輕鬆完成您的工作。

如果需要,還有用於守護程序腳本的ruby gems,因此您可以在ruby中編寫腳本執行rake任務。

如果你想要去的鐵桿,也有寫的bash腳本,可以長期駐留的解決方案,但我不知道我會建議像這樣的解決方案;至少我覺得他們很難使用。

+0

所以我應該安裝perl以使用第一個解決方案 – rubyprince

1

Take a look在GitHub的Resque項目是怎麼做的。

從本質上講,他們創建啓動/重新啓動/停止特定的任務,在這種情況下resque:work任務。請注意,restart_workers任務只是調用其他任務,停止並開始。應該很容易改變這個你想要的。