balsamique 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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