2016-04-23 12 views
0

Ich verwende twitter Gem, um API-Aufrufe von meiner App zu machen und einige Daten zu holen.Parallele Anrufe mit Twitter gem

Ich habe ein Array von user_ids und ich möchte alle Tweets von jedem Benutzer holen durch so etwas wie dies zu tun:

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

Gibt es eine Möglichkeit diese Anrufe gleichzeitig zu machen? Gibt es eine Möglichkeit, dass ich typhoeus oder ein ähnliches Juwel mit twitter verwenden kann? Gibt es eine andere Möglichkeit, wie ich diese Operation schnell machen kann?

+0

Betrachten Sie Ihre API-Aufrufe in [separate Threads] (http://ruby-doc.org/core/Thread.html) zu machen. – Uzbekjon

+0

@Uzbekjon Ich dachte zuerst daran, Threads zu verwenden, aber ich stieß auf diese [Frage] (http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading). Da ich CRuby verwende, glaube ich nicht, dass Threading mir hier helfen würde. Bitte korrigieren Sie mich, wenn ich falsch liege. –

+0

Nein, das würde gut funktionieren. Die SO Frage, die Sie verlinkt haben, hat "echtes Multithreading auf Betriebssystemebene" diskutiert. Aber es ist dir egal, wie Multithreading implementiert ist, richtig. Soweit es die Arbeit macht. – Uzbekjon

Antwort

1

Wickeln Sie Ihre API-Aufrufe in Ruby threads sie gleichzeitig auszuführen:

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 
Verwandte Themen