私はRubyサーバから外部RESTful APIに非同期でアクセスするためにRubyのEventMachineライブラリを使用しています。私のサーバーを通じて利用できるメソッドの1つは、複数の外部APIにアクセスし、応答を集約してから自分のサーバーにアクセスするクライアントに応答を返すことです。ここで私が今やっていることは...EventMachineからの複数の非同期コールバック - それを処理するより良い方法はありますか?
def aggregate
responses = Array.new
done = 0
# clients are EM::Deferrable objects...
clients.each do |client|
client.callback do |response|
responses << response
done += 1
end
client.errback do |response|
done += 1
end
end
until done == clients.length
sleep 1
end
return responses
end
このような状況を処理するには、より良い方法がありますか? EventMachineのバージョン1.0.0で出荷されるEM :: Completionクラスが、このようなユースケースをよりよくサポートする配管を提供する可能性はありますか?
私はこの問題が(StackOverflowで同様の質問を見つけることはできませんでしたが)先に出てきたと確信していますので、他の人がこの問題にどのように近づいてきたのかは興味があります。
ありがとうroidrage、em-http-requestのMultiRequestクラスは、私が探していたタイプのものです。 – Bryan