balsamique 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/balsamique.rb +37 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa87508db8374e4941511cf4aea2322d1fdd7819
4
- data.tar.gz: 5258fc17aa56b385a2643c27572f4ddad5e35e32
3
+ metadata.gz: 875fa74f76e93f583746ce80088297a1d0ee34ac
4
+ data.tar.gz: 0554405360376134aff714697848c98cb911b959
5
5
  SHA512:
6
- metadata.gz: c0f08994466deb01389d682aefa71ee7130f392fba1bab0a3020248aac69563cb4ececf832f9e45131fa397973b26b7a3e99fa13d7644741f390533f6adc858e
7
- data.tar.gz: fb3bddda2ecb9449d9ae6f7d5ff6acaedd70ce28b3275af14f0ce748f5083c844a52672c3eb8fa1f0695e75a54a20c10db99a609349d92969a75d8f37e6f74e6
6
+ metadata.gz: 173858d448408ba15351c0bcb908b615a403de5bdacc694e3caa3ff4708213dc6d4e84a23776585f755e8bb2e5036d8691903237d361e92b36a01885e07b6f09
7
+ data.tar.gz: be3fe7aff6d2fd2589abfc3173b8fe57c94dbda2e7a658a3730d6c84771c16a08d88ba9b4ed9612db3cd0fcf0c1751ae119a8e7e39a08d6cf2a425b0ac29e2b2
data/lib/balsamique.rb CHANGED
@@ -52,8 +52,8 @@ class Balsamique
52
52
  end
53
53
  end
54
54
 
55
- STATS_SLICE = 10 # seconds
56
- STATS_CHUNK = 90 # slices (= 900 seconds = 15 minutes)
55
+ STATS_SLICE = 60 # seconds
56
+ STATS_CHUNK = 60 # slices (= 3600 seconds = 1 hr)
57
57
  def self.slice_timestamp(ts)
58
58
  slice = ts.to_i / STATS_SLICE
59
59
  return slice / STATS_CHUNK, slice % STATS_CHUNK
@@ -142,7 +142,7 @@ while KEYS[i] do
142
142
  redis.call('hset', KEYS[3], KEYS[i] .. ',len,' .. ARGV[3],
143
143
  redis.call('zcard', KEYS[i]))
144
144
  redis.call('hincrby', KEYS[3], KEYS[i] .. ',dq,' .. ARGV[3], 1)
145
- redis.call('expire', KEYS[3], 21600)
145
+ redis.call('expire', KEYS[3], 90000)
146
146
  return({ elem[1],
147
147
  redis.call('hget', KEYS[1], elem[1]),
148
148
  redis.call('hget', KEYS[2], elem[1]), retries })
@@ -304,6 +304,38 @@ EOF
304
304
  result.keys.map { |k| self.class.strip_prefix(k, @que_prefix) }
305
305
  end
306
306
 
307
+ def queues_info
308
+ qs_info = redis.hgetall(@queues)
309
+ return {} if qs_info.empty?
310
+ now = Time.now.to_f
311
+ details = redis.multi do |r|
312
+ qs_info.keys.each do |key|
313
+ r.zrange(key, 0, 0, withscores: true)
314
+ r.zcount(key, 0, now)
315
+ r.zcard(key)
316
+ end
317
+ end
318
+ result = {}
319
+ qs_info.keys.each_with_index do |key, i|
320
+ i3 = 3 * i
321
+ queue = self.class.strip_prefix(key, @que_prefix)
322
+ last_id, last_ts = qs_info[key].split(',')
323
+ last_ts = last_ts.to_f
324
+ next_id = next_ts = nil
325
+ if (next_info = details[i3].first)
326
+ next_id = next_info.first
327
+ next_ts = next_info.last
328
+ end
329
+ result[queue] = {
330
+ current_ts: now,
331
+ last_id: last_id, last_ts: last_ts,
332
+ total: details[i3 + 2], ready: details[i3 + 1],
333
+ next_id: next_id, next_ts: next_ts
334
+ }
335
+ end
336
+ result
337
+ end
338
+
307
339
  def queue_length(queue)
308
340
  redis.zcard(@que_prefix + queue) || 0
309
341
  end
@@ -320,7 +352,7 @@ EOF
320
352
  end
321
353
 
322
354
  def remove_job(id)
323
- status = redis.hget(@status, id)
355
+ return unless (status = redis.hget(@status, id))
324
356
  queue, timestamps = decode_job_status(status)
325
357
  redis.multi do |r|
326
358
  if queue.start_with?(@que_prefix)
@@ -339,8 +371,7 @@ EOF
339
371
  r.hdel(@args, id)
340
372
  r.hdel(@tasks, id)
341
373
  end
342
- check_status = redis.hget(@status, id)
343
- return if check_status.nil?
374
+ return unless (check_status = redis.hget(@status, id))
344
375
  if check_status == status
345
376
  redis.hdel(@status, id)
346
377
  if (uid = redis.hget(@unique, id))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balsamique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - DWNLD
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-08 00:00:00.000000000 Z
11
+ date: 2016-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis