eventmachine でファイバー モデルを使用して外部 API を呼び出すときに何が起こっているのか理解できません。私はSinatraにこのコードを持っています:
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
また、2 つの接続を持つコネクタを使用して Rainbows サーバーを起動してい:EventMachine
ます (つまり、一度に 2 つの HTTP 要求を処理する 2 つのファイバーを意味します)。
ここで、4 つの同時要求を行った場合、アプリは最初に 2 つを管理する必要があり、外部 API 呼び出しが行われている場合、これらのファイバーは、外部呼び出しが完了するのを待っている間に 2 つの新しい http 要求を管理できるはずですよね?
これは起こっていません。slowapi 呼び出しが返されてファイバーが解放されるまで、新しい http 要求は受け入れられません。
これは正しい動作ですか?何か不足していますか?ありがとう。