Голиаф не асинхронный
Я использую простой сервер goliath на своем локальном хосте с Ruby 1.9.3, и он не выполняет http-запросы асинхронно. Вот код:
require 'goliath'
require 'em-synchrony'
require 'em-synchrony/em-http'
class Server < Goliath::API
use Goliath::Rack::Validation::RequestMethod, %w(GET PUT POST)
def initialize
super
puts "Started up Bookcover server... Let 'em come!"
end
def response(env)
thumbnail_cover_url, large_book_cover_url = ["http://riffle-bookcovers.s3.amazonaws.com/B00GJYXA5I-thumbnail.jpg", "http://riffle-bookcovers.s3.amazonaws.com/B00GJYXA5I-original.jpg"]
puts "start"
a = EM::HttpRequest.new(thumbnail_cover_url).get
b = EM::HttpRequest.new(large_book_cover_url).get
puts "done"
[200, {}, "Hello World"]
end
end
Когда я бегу ab -n 100 http://127.0.0.1:9000/
Я вижу, что он ожидает выполнения каждого запроса, что означает, что вызовы блокируются.
Однако, согласно документации, Голиаф использует Em-synchrony, чтобы позволить мне написать "синхронно выглядящий" код, который здесь не тот.
Буду признателен за любые подсказки и комментарии!