heroku运行一个守护进程

时间:2013-10-23 17:25:57

标签: ruby heroku tweetstream

我正在尝试运行在heroku上运行的deamon进程。

无框架的应用程序只是一个ruby脚本,在启动后监视我的twitter流,如果有一张带有照片的推文,则将其发布在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的新手,我在这里遗漏了一些东西,非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

您需要确保该父进程不会退出。您的代码很可能使用PID分配守护进程,然后父进程以状态0退出。状态为0表示程序已完成且一切正常。 Heroku只知道你要求它完成的过程,如果你保持父进程,它应该工作。然后父母也可以处理孩子的信号处理。

根据你的procfile命令,我猜你正在使用'daemons'gem来处理守护进程。您可以通过将ontop选项传递给run命令来保持父运行。这可以防止父母退出:

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