Mechanize을 사용하여 응답하지 않는 사이트를 가져 오는 경우 대기 상태가 계속 유지되는 것으로 나타났습니다.응답이없는 웹 사이트에서 머큐리 대기에 대해 수행 할 수있는 작업은 무엇입니까?
이 문제를 어떻게 극복 할 수 있습니까?
Mechanize을 사용하여 응답하지 않는 사이트를 가져 오는 경우 대기 상태가 계속 유지되는 것으로 나타났습니다.응답이없는 웹 사이트에서 머큐리 대기에 대해 수행 할 수있는 작업은 무엇입니까?
이 문제를 어떻게 극복 할 수 있습니까?
처리 방법에는 몇 가지가 있습니다.
Open-Uri 및 Net :: HTTP는 시간 초과 값을 전달하는 방법을 가지고 있으며, 그러면 기본 네트워킹 스택에 기다릴 시간을 알려줍니다. 예를 들어, 기계화는 인스턴스를 초기화 할 때 그 설정 같은, 무언가를 얻을 수 있습니다 :
mech = Mechanize.new { |agent|
agent.open_timeout = 5
agent.read_timeout = 5
}
그것은 new
의 문서에있는 모든입니다하지만 당신은 당신이 얻을 수있는 인스턴스의 변수를 확인하기 위해 소스를 볼 수있을 것이다 에서.
아니면 루비의 timeout
모듈을 사용할 수 있습니다 :이 페이지의
require 'timeout'
status = Timeout::timeout(5) {
# Something that should be interrupted if it takes too much time...
}
+1'timeout' 모듈 –
에 대해 기계화 타임 아웃이 무시 당하고 있다고 말할 수있는 한 ... – Eskim0
만약 이것이 맞다면 Mechanize 작가와 함께 생각해야한다. –
http://mechanize.rubyforge.org/mechanize/Mechanize.html 2 개 문서화되지 않은 속성 open_timeout
및 read_timeout
가 그들을 사용해보십시오.
agent = Mechanize.new { |a| a.log = Logger.new("mech.log") }
agent.keep_alive=false
agent.open_timeout=15
agent.read_timeout=15
HTH
사이트가 무엇이며 오류가 무엇입니까? – Wukerplank
문제가있는 사이트의 예 : karusela.net –
-1 질문이 너무 모호합니다. 지금까지 시도한 것을 보여주지는 마세요. Stack Overflow의 모든 것이 질문이기 때문에 "Question"은 질문 제목에서 중복됩니다. –