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 –