class BgResults::Batch
Constants
- RESULT_TTL
Public Class Methods
new(bid)
click to toggle source
# File lib/bg_results/batch.rb, line 4 def initialize bid @bid = bid @key = "RESULTS-#{@bid}" end
Public Instance Methods
clear_results!()
click to toggle source
# File lib/bg_results/batch.rb, line 46 def clear_results! BgResults.redis do |conn| conn.del @key end end
results()
click to toggle source
# File lib/bg_results/batch.rb, line 9 def results data, _ = BgResults.redis do |conn| conn.multi do conn.hgetall @key conn.expire @key, RESULT_TTL end end parse_results data end
results_each() { |jid, res| ... }
click to toggle source
# File lib/bg_results/batch.rb, line 31 def results_each return unless block_given? results_in_batches do |batch| batch.each do |jid, res| yield jid, res end end end
results_in_batches() { |data| ... }
click to toggle source
# File lib/bg_results/batch.rb, line 19 def results_in_batches count = 100 cursor = 0 loop do cursor, data = scan cursor, count data = parse_results data.to_h yield data break if cursor == 0 end set_results_expire end
set_results_expire(exp=RESULT_TTL)
click to toggle source
# File lib/bg_results/batch.rb, line 40 def set_results_expire exp=RESULT_TTL BgResults.redis do |conn| conn.expire @key, exp end end
Private Instance Methods
parse_results(data)
click to toggle source
# File lib/bg_results/batch.rb, line 60 def parse_results data data = data.map do |k,v| payload = JSON.parse v [k, payload["result"]] end.to_h end
scan(cursor, count)
click to toggle source
# File lib/bg_results/batch.rb, line 53 def scan cursor, count new_cursor, data = BgResults.redis do |conn| conn.hscan @key, cursor, count: count end [new_cursor.to_i, data] end