Comment puis-je accélérer les résultats de recherche générés par l'envoi d'un ping à l'API Lastfm?Comment augmenter la vitesse de recherche d'une API externe?
Voici le code que nous travaillons avec:
def self.search(term)
LastfmAPI.artist_search(term).map { |a| Lastfm::Artist.new(a) }
end
# Name and lastfm_id are synonyms
def name
self.lastfm_id
end
def past_events(geo=nil, options={})
events = self.events.past
lastfm_count = LastfmAPI.artist_getPastEvents_count(self.lastfm_id)
# Check if database is current
if events.count == lastfm_count # TODO: && the first event itself matches entirely
# TODO: extract above comparison to method
# return only those in the correct radius
events = events.in_radius(geo) if geo.present?
else
# if not current, make array of Lastfm::Event objects from API call
events = LastfmAPI.artist_getPastEvents_all(self.lastfm_id, lastfm_count).map do |e|
Saver::Events.perform_async(e) # send to worker to save to database
Lastfm::Event.new(e)
end
Malheureusement, je ne peux pas voter parce que je n'ai pas encore 15 représentants. Mais votre réponse est appréciée Jeremy. Nous mettons actuellement les données en cache, ce qui améliore les résultats de recherche, car plus de données sont mises en cache localement. Mais les nouvelles recherches sont encore relativement lentes et je suppose que c'est hors de notre contrôle. – user2821877