Rake Task Starts但在通过控制器执行时突然停止

时间:2012-08-06 15:51:36

标签: ruby-on-rails linux ruby-on-rails-3

我有一组在生产服务器上运行的rake任务,它与主线程分离,并在后台发生

这是执行它的代码

def vehicle
    @estate = Estate.find(@estate_id)
    @date_string = @login_month.strftime("%m%Y")
    system("rake udpms:process_only_vehicle[#{@date_string},#{@estate_id}] &")
    redirect_to :controller => "reports/error_messages", :message => "Processing will happen in the background and reports will be refreshed after two minutes", :target => "_blank"
  end

当通过url路由执行此代码时,它运行rake任务,我可以查看是否检查生产计算机上的活动进程,但是它在大约10秒后突然结束。

ps axl | grep rake

这是它显示的

ruby /usr/local/rvm/gems/ruby-1.8.7-p352/bin/rake udpms:process_only_vehicle[082012,5]

如果我在终端的app文件夹中执行相同的rake任务,则运行时不会出现任何错误。这在开发机器上没有任何问题。 (OSX)。服务器是Mint。耙式版本在两者上都是一样的。宝石只有一个版本。

因为它的生产服务器没有日志(除了produciton.log,它没有帮助)。任何有关我如何调试此问题的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这可能是因为您的服务器软件需要花费超过10秒钟才能响应的请求。尽管您正在开始执行rake任务,但它仍然需要等待执行system调用:如果需要一段时间,则任务将终止,服务器工作程序将返回到工作池。

从更一般的意义上讲,这不是在后台完成任务的合适方式。您可能希望使用ResqueDelayed Job,这会将任务排入队列并在后台运行。