2009-12-03 9 views
1

ActiveResource에서 정말 이상한 오류가 발생합니다. 다른 제품을 호출하여 제품 목록을 얻는 방법이 있습니다. 목록은 상당히 크며 생성 및 전송하는 데 약 3 분이 걸립니다. 이것은 정말로 하루에 한 번 밖에없는 일이기 때문에 나는 그것을 실행하기 위해 갈퀴 작업을 만들었습니다. 생산시 레이크 작업을 실행할 때마다 500 오류가 발생합니다. 여기에 내가 스크립트 주자 사용하려고 몇 가지 샘플 출력 다음ActiveResource 500 내부 서버 오류

$ time RAILS_ENV=production rake api:sync 
rake aborted! 
Failed with 500 Internal Server Error 

(See full trace by running task with --trace) 

real 2m1.753s 
user 0m1.188s 
sys 0m0.188s 

이다 : 나는 그것을 실행하는 콘솔에 뛰어들 경우

$ RAILS_ENV=production script/runner 'Product.synchronize!(ProductManager::Product.find_valid_products)' 
/var/www/apps/api/releases/20091202203413/vendor/rails/railties/lib/commands/runner.rb:48: Failed with 500 Internal Server Error (ActiveResource::ServerError) 
    from /usr/local/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill' 
    from /usr/local/lib/ruby/1.8/timeout.rb:62:in `timeout' 
    from /usr/local/lib/ruby/1.8/timeout.rb:93:in `timeout' 
    from /usr/local/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill' 
    from /usr/local/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' 
    from /usr/local/lib/ruby/1.8/net/protocol.rb:126:in `readline' 
    from /usr/local/lib/ruby/1.8/net/http.rb:2020:in `read_status_line' 
    from /usr/local/lib/ruby/1.8/net/http.rb:2009:in `read_new' 
    ... 17 levels... 
    from /var/www/apps/api/releases/20091202203413/vendor/rails/railties/lib/commands/runner.rb:48 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    from script/runner:3 

을, 모든 것이 괜찮 :

$ script/console production 
Loading production environment (Rails 2.3.5) 
>> Product.synchronize!(ProductManager::Product.find_valid_products); nil # prevent dump to console 
=> nil 
>> 

I 시간 초과라고 의심되어 ProductManager :: Product 클래스에서 제한 시간 값을 5 분으로 설정했지만 아무 효과가 없습니다. 흥미로운 점은 rake 나 script/runner를 통해 실행할 때 2 분 1 초에 오류가 발생한다는 것입니다. 개발 및 준비 단계에서는 아무런 문제가 없습니다. ActiveResource의 제작 과정에서 숨겨진 2 분 오버라이드를 찾을 수 없습니까?

추적에서 가져 오지 않았을 경우를 대비하여 우리는 Rails 2.3.5를 응용 프로그램에 고정 시켰습니다. 감사합니다 당신이

피어

+0

AFAIK 액티브 리소스에는 2 분이 없습니다. 아마도 HTTP 클라이언트에는 자체 시간 제한이 있습니다. –

+0

OOC - 콘솔에서 실행할 때. 얼마나 시간이 걸려요? 즉, 2 분 이상 걸리나요? 아니면 이미 동기화했기 때문에 빠르게 실행됩니까? –

답변

0

그것이 아파치 설정이었다 밝혀 도움을. httpd.conf 파일의 RequestTimeout은 120 초입니다. 일단 우리가 모든 것을 좋게했다.

관련 문제