2016-04-23 85 views
0

我使用twitter gem從我的應用程序調用API調用並獲取一些數據。使用twitter gem進行並行調用

我有user_ids一個數組,我想通過做這樣的事情來獲取每個用戶的所有微博:

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

有沒有什麼辦法讓這些電話併發?有什麼方法可以使用typhoeus或者其他類似的twitter?有沒有其他方法可以使此操作更快?

+0

考慮[單獨的線程]讓你的API調用(http://ruby-doc.org/core/Thread.html)。 – Uzbekjon

+0

@Uzbekjon我首先想到了使用線程,但我遇到了這個[問題](http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading)。當我使用CRuby時,我認爲線程不會幫助我。如果我錯了,請糾正我。 –

+0

不,那會工作得很好。您鏈接到的SO問題討論了「真正的OS級多線程」。但是,你並不關心多線程是如何實現的,對。就其所做的工作而言。 – Uzbekjon

回答

1

環繞你的API調用在Ruby threads同時運行它們:

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