Голиаф не асинхронный

Я запускаю простой сервер-голиаф на своем локальном хосте с 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/, я вижу, что он ожидает выполнения каждого запроса, что означает, что вызовы блокируются.

Однако, согласно документации, Goliath использует Em-synchrony, чтобы позволить мне писать «синхронно выглядящий» код, что здесь не так.

Буду признателен за любые подсказки и комментарии!


person Kenny Meyer    schedule 19.02.2014    source источник


Ответы (1)


Кредиты идут в igrigorik для ответа. Я цитирую его ответ здесь:

Вам также необходимо указать уровень параллелизма при запуске ab... например. аб-с 10 :)

Кроме того, убедитесь, что вы запускаете его в рабочем режиме (-e prod).

person Kenny Meyer    schedule 19.02.2014