2016-03-21 2 views
0

Я новичок на sidekiq. мой сайт развернуть в HerokuSidekiq Каков наилучший способ получить ограниченное количество данных по вызову api?

и в моем коде я должен объявить config/sidekiq.yml

# Place this file at config/sidekiq.yml and Sidekiq will 
# pick it up automatically. 
--- 
:verbose: false 
:concurrency: 20 

# Set timeout to 8 on Heroku, longer if you manage your own systems. 
:timeout: 30 

# Sidekiq will run this file through ERB when reading it so you can 
# even put in dynamic logic, like a host-specific queue. 
# http://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/ 


# you can override concurrency based on environment 
production: 
    :concurrency: 25 
staging: 
    :concurrency: 15 

В моем workeer у меня есть выборка данных из апи

Мои PROCFILE является worker: bundle exec sidekiq -C config/sidekiq.yml

Мой рабочий вид

class SfApifetch 
    include Sidekiq::Worker 
    sidekiq_options retry: false 
    def perform(name, count) 
    # do something 
    Net::Http...rest of the code 
    end 
end 

Can anyon e подскажите, как я могу получить данные в пакетном лимите, так как я хочу получить 1000 записей первой страницы, а затем забрать 1000 записей таким образом, чтобы это не мешало производительности, а улучшало скорость.

Я новичок на sidekiq и BG любое предложение будет большая помощь для меня

меня следовать http://railscasts.com/episodes/366-sidekiq?view=asciicast

+1

Не могли бы вы предоставить сообщение специалисту. – spickermann

+0

ok Я назначил работника –

+0

@spickermann благодарит вас за проявленный интерес к моему сообщению .. пожалуйста, предложите, как я могу оптимизировать его для получения данных более быстрым способом с 1000, 1000, 1000 таким образом, страница wise –

ответ

0

Если внешний API предоставляет некоторые id или другое уникальное поле вы можете сохранить его в какой-то переменную и передать ее следующему рабочему вызову, например

class AwesomeWorker 
    LIMIT = 1000 

    include Sidekiq::Worker 

    def perform(name, count, last_id = nil) 
    # fetching data from last_id, limited by LIMIT 
    # fetching from the beginning if last_id is nil 

    # running worker with id of the last record 
    AwesomeWorker.perform_async(name, count, data.last_id) 
    end 
end