2012-01-02 3 views
0

지연된 작업의 런타임을 레일로 가져 오는 중입니까?

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 

그래서 runtimeBenchmark 모듈을 사용하여 계산하고 기록되지만 나중에 사용을 위해 어디서나 저장되지 것입니다.

비록 유사한 Benchmark.realtime 호출 또는 그와 비슷한 로직을 래핑하여 작업의 런타임을 계산할 수 있습니다.

+0

또 다른 옵션은 클래스를 열고 run 메서드를 재정 의하여 동작을 변경하는 것입니다. – Nick

+1

예, 클래스를 다시 열면 루비에서와 같은 대부분의 문제를 해결할 수 있습니다. 그러나 그것은 최상의 해결책이며 가능하다면 그것을 피하는 것이 좋습니다. 앱의 모든 백그라운드 작업에 타이밍이 필요한 경우에도 자신 만의'BaseJob' 클래스를 만들고 필요한 로직을 구현하고이 클래스에서 모든 작업을 파생시킬 수 있습니다. –

+0

Benchmark에서 작업을 완벽하게 처리하면 dj가 기록한 시간이 Benchmark 결과와 일치합니다. 재사용해야 할 필요가 있다면 자체적으로 기본 작업을 만들지 만 일회용으로도 좋습니다. – Smickie

관련 문제