Ruby でさまざまなノンブロッキング IO ライブラリを使用する方法を理解しようとしており、Sinatra を使用してテスト用の簡単なアプリを作成しました。
# proxy.rb
require 'bundler/setup'
require 'sinatra/base'
require 'sinatra/synchrony'
require 'faraday'
class ProxyApp < Sinatra::Base
register Sinatra::Synchrony
get "/proxy" do
conn = Faraday.new("http://mirror.yandex.ru") do |faraday|
faraday.use Faraday::Adapter::EMSynchrony
end
conn.get "/ubuntu-releases/precise/ubuntu-12.04.1-alternate-i386.iso"
"Hello, world"
end
get "/" do
"Hello, world"
end
end
私が理解している限り、ノンブロッキングIOを使用してファイルをダウンロードすると、他のリクエストを実行できるはずですが、そうではありません-パスab
を開くために使用している場合/proxy
(アプリサーバーとしてThinを使用している場合)、リクエストが/
かかりますとても長い間。私は何か間違ったことをしていますか?