require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.facebook.com/'},
{'link' => 'http://www.yahoo.com/'}
]
urls.each do |u|
u['content'] = Net::HTTP.get(URI.parse(u['link']))
end
print urls
To będzie działać jako kod proceduralny. Po prostu chcę trafić serwer, bez problemów z zamówieniem. Jak mogę to zrobić w ruby? Jedną z opcji jest używanie wątków.asynchroniczne żądanie http w ruby
Oto przykład użycia wątków.
require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.facebook.com/'},
{'link' => 'http://www.yahoo.com/'}
]
urls.each do |u|
Thread.new do
u['content'] = Net::HTTP.get(URI.parse(u['link']))
puts "Successfully requested #{u['link']}"
if urls.all? {|u| u.has_key?("content") }
puts "Fetched all urls!"
exit
end
end
end
Jakieś lepsze rozwiązanie .. ??
PS: - chcę uderzyć w mixpanel, dlatego właśnie chcę wykonać połączenie http i nie czekać na odpowiedź.
prostu zastanawiasz się: jesteś kodowania w Ruby lub Rails? – apneadiving
szyny, pytanie jest oznaczone szynami 3 :) –
ok, nie byłem pewien. Cokolwiek, to nie zmienia mojej odpowiedzi :) – apneadiving