【发布时间】:2017-04-23 06:37:14
【问题描述】:
Rails Rufus 调度器执行一些文件操作。当我启动服务器时,会调用 rufus cron,但是一旦遇到文件操作,调度程序就会停止
我的调度器如下所示
deployed_test_scheduler = Rufus::Scheduler.new
deployed_test_scheduler.cron("56 20 * * *") do
OutputsController.deploy_tests
puts "Got Deployed Tests"
end
deploy_tests 方法的代码 sn-p 如下所示
....
Rails.logger.info "response0"
target = open(filepath, 'w')
Rails.logger.info "response1"
target.write(response)
Rails.logger.info "response2"
target.close
Rails.logger.info "response3"
....
production.log 如下所示
.....
I, [2016-12-08T05:03:57.193906 #27950] INFO -- : response0
.....
除“response0”外没有其他日志被打印,但在 WEBrick 上完美运行
是什么导致 Nginx 乘客在遇到文件操作时停止进一步处理
附言rails 版本 - 4.1.6 ruby 版本 - 2.2.0 乘客版本 - 5.0.30 nginx 版本 - 1.10.1
【问题讨论】:
-
将您的代码包装在开始/救援块中并记录错误(如果有)。
-
一个问题:你的stackoverflow.com/questions/41027855/…解决了吗?似乎是这样,因为 rufus-scheduler 没有被Passenger杀死。
-
如果你暗示这是 rufus-scheduler 错误,你最好指出你使用的是什么版本。
-
关于 stackoverflow.com/questions/41027855/… 乘客在没有 UI 请求的情况下不会为应用程序提供服务。一旦客户端触发 UI,乘客就会产生一个新进程并由于“min.instances”属性而使其保持活动状态 - 这确保了 rufus 调度程序被解雇。
标签: ruby-on-rails nginx cron passenger rufus-scheduler