2016-04-23 12 views
0

私はtwitter gemを使用して、私のアプリからAPI呼び出しを行い、データを取得しています。twitter gemとの並列コール

私はuser_idsの配列を持っていると私はこのような何か行うことにより、各ユーザーのすべてのつぶやきを取得したい:

user_ids.map {|user_id| Client.user_timeline(user_id)} 

は、これらの呼び出しは、同時にする方法はありますか? typhoeustwitterと似たような宝石を使う方法はありますか?この操作を高速化できる他の方法はありますか?

+0

は、[別のスレッド](http://ruby-doc.org/core/Thread.html)で、あなたのAPI呼び出しを行うことを検討してください。 – Uzbekjon

+0

@Uzbekjon私は最初にスレッドを使うことを考えましたが、私はこの[質問](http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading)に出くわしました。私がCRubyを使用しているので、私はスレッドがここで私を助けるとは思わない。私が間違っていれば私を修正してください。 –

+0

いいえ、それはうまくいくでしょう。リンクしているSOの質問は、「真のOSレベルのマルチスレッド」について議論しました。しかし、マルチスレッドがどのように実装されているかは気にしません。それが仕事をする限り。 – Uzbekjon

答えて

1

同時にそれらを実行するためにRuby threadsであなたのAPI呼び出しをラップ:

tweets, threads = [], [] 

threads = user_ids.map do |user_id| 
    Thread.new { tweets << Client.user_timeline(user_id) } 
end 

threads.each(&:join) 

# All the tweets are in the `tweets` array 
puts tweets