2
我有问题了解使用带有eventmachine的光纤模型调用外部API时发生了什么。我有这样的代码在西纳特拉:Sinatra中的光纤和多个http请求
get '/' do
conn = Faraday.new 'http://slow-api-call' do |con|
con.adapter :em_http
end
resp = conn.get
resp.on_complete {
request.env['async.callback'].call(resp)
}
throw :async
end
此外,我使用的连接器:EventMachine
与2个连接(这意味着2种纤维处理在时刻2个的http请求)引导彩虹服务器。
现在,如果我提出了4个并发请求,应用程序应该首先管理2个,并且在进行外部API调用时,这些光纤应该能够在等待外部呼叫完成时管理2个新的http请求, 对?
这没有发生。在slowapi呼叫返回并释放光纤之前,没有新的http请求被接受。
这是正确的行为吗?我错过了什么吗? 谢谢。
也许看看https://github.com/raggi/async_sinatra –