2012-11-09 2 views
1

내 응용 프로그램에서는 5 분마다 작업을 실행해야합니다. 작업 자체는 매우 희박하므로 문제가되지 않습니다. 요점은 Rails 환경을로드하면 서버의 거의 모든 CPU를 사용한다는 것입니다.전체 환경을로드하지 않고 Rails에서 반복 작업 수행

every 5.minutes do 
    runner Task.perform 
end 

을하지만 비용이 너무 큰 : 지금, 내 schedule.rb이 같은 코드로 whenever을 사용하고 있습니다. 미리로드 된 환경에서 이러한 종류의 작업을 실행할 수 있습니까? 또는 다른 더 나은 해결책?

답변

0

cron 작업을 사용하거나 bash 스크립트로 실행하도록 설정할 수 있습니다. 이것들은 어플리케이션에 묶이지 않는 이점이 있습니다.

+0

'언제든지'입니다. OP의 질문을 올바르게 읽으면 문제는 5 분마다 전체 레일 스택을로드하는 데 드는 비용입니다. –

1

(특히, 많은 보석을 delayed job)를 백그라운드 프로세스를 사용하는 것을 고려하고

def perform 
    last = Time.now 
    while true 
    if last.sec % (5 * 60) != 0 
     do_task 
     last = Time.now 
    end 
    end 
end 

경고와 같은 폴링 루프 뭔가 코드에서 간단한 "크론"을 구현 :이 예는 한 조각보다 더 많은 구멍이 있습니다 스위스 치즈. 더 나은 것을 쓰십시오 :-)