require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.yandex.ru/'},
{'link' => 'http://www.baidu.com/'}
]
urls.each do |u|
u['content'] = Net::HTTP.get(URI.parse(u['link']))
end
print urls
이 코드는 동기식 스타일로 작동합니다. 첫 번째 요청, 두 번째, 세 번째. 모든 요청이 비동기 적으로 보내지면 모두 urls
을 인쇄하고 싶습니다.여러 HTTP 요청을 비동기 적으로 만들기
가장 좋은 방법은 무엇입니까? 섬유는 그 용도에 적합합니까?
이 보인다. 그러나 15 초 후에 서버가 응답하지 않으면 스레드를 죽이는 방법은 무엇입니까? – NVI
'Timeout.timeotu (20) do .... end'를 사용할 수 있습니다. 그 러면 오류가 발생하기 때문에 프로그램의 흐름을 따라 뭔가를해야하고'content' 키가 있는지 확인하는 것 이외의 요청이 완료되었음을 태그하는 방법이 있어야합니다. –
Ruby의 Net :: HTTP는 threadsafe입니까? – Daniel777