2013-10-23 126 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