2013-10-23 79 views
1

我試圖運行一個deamon進程在heroku上運行。heroku運行一個守護進程

無框架應用程序只是一個紅寶石腳本,它啓動後監視我的Twitter流,如果有一張照片tweet,然後發佈在tumblr上。

本地它運行得很好,但是當我在heroku上運行它時,它只是馬上崩潰。

heroku[worker.1]: Starting process with command `bundle exec ruby twitter-to-tumblr.rb start` 
heroku[worker.1]: State changed from starting to up 
heroku[worker.1]: Process exited with status 0 
heroku[worker.1]: State changed from up to crashed 

我是一個紅寶石和heroku新手,我失去了一些東西在這裏,任何幫助真的很感激。

謝謝

+0

當您在腳本中啓動守護進程時,父節點是否正在退出? –

+0

本地它確實,我不知道對heroku – Jacopo

回答

0

您需要確保該父進程不會退出。您的代碼很可能會使用PID分支守護進程,然後父進程退出狀態0.狀態爲0意味着程序已完成並且一切正常。 Heroku只知道你問的過程完成了,如果你保留它的父過程應該工作。父母也可以處理孩子的信號處理。

根據你的procfile命令,我猜你正在使用'守護進程'gem來處理守護進程。您可以通過將runtop選項傳遞給run命令來使父級繼續運行。這可以防止父節點退出:

Daemons.run_proc('tweetzilla', {:ontop => true}) do 
    # => long running code here. 
end 
+0

非常感謝!有效! – Jacopo