我有一个Rails应用程序在Apache + Passenger下运行,并使用backgroundrb进行一些任务。乘客启动时有没有办法让backgroundrb开始?例如,在服务器重启之后,我希望所有的东西都可以在没有手动干预的情况下重新启动,以启动backgroundrb或者为它创建一个init脚本。如何在乘客启动时启动backgroundrb?
0
A
回答
1
您可以在Rails初始化程序(config/initializers
)中进行调用。
要所以只有当乘客作业启动做,包裹呼叫类似...
if defined? PhusionPassenger
PhusionPassenger.on_event :starting_worker_process do |forked|
if forked
... spawn your backgroundrb here...
end
end
end
这种方法的问题是,你最终会产生一个新的进程与每一位乘客工作进程。你需要检查一下,看看backgroundrb是否已经在运行。
看看ShogunPanda的评论here,看看我们如何使用Rufus Scheduler和PID文件。你应该可以做类似的事情。
0
你可以考虑把这个在你的config/environment.rb文件中:
unless FileTest.exist?("#{RAILS_ROOT}/log/backgroundrb.pid")
fork do
exec("#{RAILS_ROOT}/script/backgroundrb", "run")
end
end
变化/log/backgroundrb.pid到任何你了pidfile服务器backgroundrb使用,你应该去比赛......
相关问题
- 1. 乘客:在启动时预加载
- 2. shell脚本启动乘客
- 3. 乘客无法启动PHUSION
- 4. 如何重新启动phusion乘客?
- 5. 如何知道乘客滚动重启何时完成?
- 6. 如何在启动时启动“unbound”
- 7. 如何在tomcat启动时启动ActiveMQ?
- 8. 如何在启动时启动node.js + supervisor?
- 9. 如何在启动时启动hadoop?
- 10. 乘客与虾不会启动
- 11. 红宝石乘客不会启动
- 12. 用户启动乘客(使用Nginx)
- 13. 乘客申请不再启动:Errno :: EPIPE
- 14. 乘客启动错误-e生产
- 15. Apache2无法启动 - Mac OS X - 乘客
- 16. 乘客和Nginx不会启动
- 17. Phusion乘客未启动:“sudo:passenger:command not found”
- 18. 乘客无法启动80端口上
- 19. 如何在生产环境中启动乘客?
- 20. 我如何使nginx和乘客在部署后自动重启
- 21. 如何在铁轨应用程序中启动乘客?
- 22. 如何防止backgroundrb启动相同任务的多个副本?
- 23. 在启动时启动delayed_job
- 24. MongoDB在启动时启动?
- 25. 当启动乘客时,在.bash_profile上的权限被拒绝
- 26. 乘客4.0独立不在rvm下使用jruby时启动
- 27. 乘客Apache2 CentOS RVM权限在启动时被拒绝
- 28. 无法在EC2启动nginx +乘客上启动Rails服务器。 (Linux的CentOS的)
- 29. 启动时启动
- 30. 在启动/重启时启动Resque
事件名称为“:starts_worker_process”而非“:start_worker_process” – ZX12R 2012-06-20 08:05:45
每个@ ZX12R注释的固定代码 – 2012-07-02 17:54:56