我正在尝试异步 Sinatra 并遇到问题。
使用以下简单代码时:
require 'sinatra'
require 'sinatra/async'
Sinatra.register Sinatra::Async
aget '/delay/?' do
logger.info "Connected"
EM.add_timer(5) { body {"delayed for 5 seconds" } }
end
当我与 ab 同时请求 /delay/ 时,它运行良好,所有请求都需要 5 秒。
但是,当我从 2 个 Chrome 选项卡(或 Firefox)中请求 /delay/ 时,它确实会阻塞,并且它会按顺序执行,导致第二个请求需要 10 秒。
有趣的是,从多个 Safari 选项卡请求它,再次执行良好(并行)。
任何想法,什么可能导致这种行为?
宝石版本:
gem 'sinatra', "~> 1.3.2"
gem "eventmachine", "1.0.0.beta.4.1"
gem 'thin', "~> 1.3.1"
gem "async_sinatra", "~> 1.0.0"