Ruby 《赛璐珞泳池》第一次叫来了死去的演员
每次我启动应用程序,第一次调用它时,它都会返回死去的演员。之后,它会像预期的那样返回Ruby 《赛璐珞泳池》第一次叫来了死去的演员,ruby,celluloid,Ruby,Celluloid,每次我启动应用程序,第一次调用它时,它都会返回死去的演员。之后,它会像预期的那样返回 require 'celluloid' class BatchProcess include Celluloid POOL = BatchProcess.pool(size: 6) attr_accessor :base_url, :futures, :objects, :pool, :array def initialize(*args) options = args.extra
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
需要“赛璐珞”
类批处理过程
包括赛璐珞
池=批处理池(大小:6)
属性访问器:基本url、:未来、:对象、:池、:数组
def初始化(*args)
选项=args.extract\u选项!
@基本url=选项[:基本url]||”http://some_site.com"
@期货=[]
@对象={}
结束
def fetch(阵列)
@池=池
@数组=数组
开始
结束
def启动
@grouped_sites=@array.group_by{i | i[:main_site]}
@分组的_站点。每个do|主_站点,查询|
批处理url(主站点、查询)
结束
futures.each{f |@objects.merge!(f.value)if f.value}
结束
def批处理URL(主站点、查询)
查询。每个do |查询|
期货这是因为在定义initialize
之前,将池实例化为class
常量。在设置池
常量时,初始化
还不存在,因此没有初始化任何实例变量
第二次尝试时,将定义初始化