2012-01-02 10 views
0

私はあなたからこの統計にアクセスする方法を思っていた私は遅れ仕事ランニングを持っているし、それが終了し、労働者がこのようなログに、実行時にログオンしたとき、私は、ランタイムを保存したい...遅延ジョブの実行時間をレールで取得するには?

XXXXXJob completed after 1.6372 

遅延ジョブクラスの中に?

私はself.runtimeを試しましたが、エラーが発生しています。

乾杯。

答えて

1

私は恐れていますdelayed_job gemはその統計にアクセスするためのAPIを提供していません。彼らは時間を実行している計算し、それがそこに何が起こっているかだし、hereが行われているように見える:

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

のでruntimeBenchmarkモジュールを使用して計算してログインしますが、それは後の使用のためにどこにも保存されていないされています。

でも、同じようにBenchmark.realtimeコールなどでロジックをラップすることで、ジョブの実行時間を計算することはできます。

+0

もう1つのオプションは、クラスを開き、runメソッドをオーバーライドして動作を変更することです。 – Nick

+1

はい、クラスを再度開くと、Rubyのような問題のほとんどを解決できます。しかし、それは最高の解決策であり、私は可能な限り避ける方がよいでしょう。あなたのアプリケーションでバックグラウンドジョブのタイミングが必要な場合でも、独自の 'BaseJob'クラスを作成し、必要なロジックを実装し、このクラスからすべてのジョブを派生させることができます。 –

+0

ベンチマークでジョブをラップすると、djが記録した時間がベンチマークの結果と一致しました。それをもっと再利用する必要があるなら、私はそれ自身の基本的な仕事を作りますが、それは一回限りのものとして大丈夫です。 – Smickie

関連する問題