2013-09-27 2 views
1

Как я могу ускорить результаты поиска, вызванные пингом Lastfm api?Как увеличить скорость поиска от внешнего API?

Вот код, мы работаем с:

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 

ответ

1

Когда вы в зависимости от внешних услуг, существует не так много, что вы можете сделать, чтобы ускорить фактическое выполнение их службы. Лучшее, что вы можете сделать, - это кешировать вещи локально в своем собственном приложении, чтобы вы не совершали туда и обратно.

+0

К сожалению, не могу голосовать, так как у меня пока нет репутации 15. Но ваш ответ приветствуется Джереми. В настоящее время мы кэшируем данные, поэтому результаты поиска улучшаются по мере того, как все данные кэшируются локально. Но новые поиски по-прежнему относительно медленные, и я думаю, что это не поддается контролю. – user2821877

Смежные вопросы