Каждый раз, когда я запускаю приложение, в первый раз, когда я его называю, он возвращает Dead Actors. После этого он возвращается, как ожидалось.Целлулоид Пул имеет мертвых актеров в первый раз под названием
require 'celluloid'
class BatchProcess
include Celluloid
POOL = BatchProcess.pool(size: 6)
attr_accessor :base_url, :futures, :objects, :pool, :array
def initialize(*args)
options = args.extract_options!
@base_url = options[:base_url] || "http://some_site.com"
@futures = []
@objects = {}
end
def fetch(array)
@pool = POOL
@array = array
start
end
def start
@grouped_sites = @array.group_by{|i| i[:main_site]}
@grouped_sites.each do |main_site, queries|
batched_url(main_site, queries)
end
futures.each {|f| @objects.merge!(f.value) if f.value}
end
def batched_urls(main_site, queries)
queries.each do |query|
futures << pool.future(:get_url, main_site, query)
end
end
def get_url(main_site, query)
# get http url and parse information process into json data
end
end
Я затем вызвать его из моего контроллера BatchProcess.new.fetch(array_of_sites_to_parse)
Я попытался поставить @pool = BatchProcess.pool
в моем инициализаторе, это не ошибка, но актеры росли в геометрической прогрессии с каждым запросом.