Sha256: 4cde2e86589c77273767416ee38f9dfe5be994224ecd72bee89b720707a7d785
Contents?: true
Size: 861 Bytes
Versions: 2
Compression:
Stored size: 861 Bytes
Contents
require "async" require "async/barrier" require "async/http/internet" class AsyncLoader def self.perform(urls) internet = Async::HTTP::Internet.new barrier = Async::Barrier.new time = Time.now requests = 0 result = [] urls.each do |url| barrier.async do Console.logger.info "AsyncHttp#get: #{url}" begin response = internet.get(url) body = JSON.parse(response.read) result << { url: url, body: body } requests += 1 ensure response.finish end Console.logger.info "AsyncHttp#fulfill: #{url}" end end Console.logger.info "AsyncHttp#wait" barrier.wait total = Time.now - time result.unshift({time: "Duration: #{Time.now - time}s for #{requests} (RPS: #{(requests / total).to_i} r/s)"}) result.to_json end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
qravan-0.1.1 | lib/qravan/async_loader.rb |
qravan-0.1.0 | lib/qravan/async_loader.rb |