2012-01-02 62 views
0

我有一个延迟的工作运行,我想保存在运行时,当它结束时,工作人员会记录运行到这样的日志...在rails中获取延迟作业的运行时间?

XXXXXJob completed after 1.6372 

我想知道你是如何从访问此统计在延迟的工作课内?

我试过self.runtime但那是抛出一个错误。

干杯。

回答

1

恐怕delayed_job宝石不用于访问统计提供API。貌似here是被它们计算运行时间的地方,这就是正在发生的事情有:

runtime = Benchmark.realtime do 
    invoke_job 
    destroy 
end 
logger.info "* [JOB] #{name} completed after %.4f" % runtime 

所以runtime使用Benchmark模块计算和记录,但它不是以备后用存储在任何地方。

虽然,你仍然可以通过类似Benchmark.realtime电话或类似的东西包裹它的逻辑计算工作自己运行。

+0

另一种选择是开放的类和重写run方法改变的行为。 – Nick 2012-01-02 20:16:58

+1

是的,重新开课可以解决大部分像红宝石般的问题。但这是最好的解决方案,如果可能的话,我最好避免它。即使您需要为应用程序中的每个后台作业计时,您也可以创建自己的“BaseJob”类,实现所需的逻辑并从此类中派生所有作业。 – 2012-01-02 20:24:02

+0

在基准测试中包装工作非常完美,dj记录的时间与基准测试结果相匹配。如果需要重复使用,我会创建它自己的基础工作,但可以作为一次性工作。 – Smickie 2012-01-05 09:40:11