boy_band 0.1.10 → 0.1.11

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/boy_band.rb +11 -24
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7bb0ed487c254092a58036d84d154080993a6d82a8fc21db12e69781643fc614
4
- data.tar.gz: a2f5dd392d8d591205cdf2b0d75b0682ef82f5f1ac7fa759f44533a057b2d847
3
+ metadata.gz: 6931c59174a8d6eda05b764b143c11c38532c46ae0d68f41b35700539db6e45a
4
+ data.tar.gz: 7df882de888ee4ac4680d37006f437d5b26e9055f193f596486f6259bb75997e
5
5
  SHA512:
6
- metadata.gz: 21f05cb1669ac54fdc77668a0b80708092e997a832abc504872c2be5aee145b66e3bd3ff4a79b80dafb6ede62a6838d0785de9665db9e8de00f51acaf5f55fa6
7
- data.tar.gz: 06c726f35e6c6dafe8ee6baa8ac6ec7acc37b12980b85b5f9712ec132af92912079625050cb0b9d739b3c5cc13428e2ff55dc28c3ac62519bf310cdd685a1892
6
+ metadata.gz: 2c19f3dd8e840f87b903d97450adbbfe0ce92b236cbbdec0905b7e6f18c283dcf2dccc2372f731cfbcc53bde6e530e79061b6da072b1cf49f61fe1ab461daeb4
7
+ data.tar.gz: 41cbb91e46bc9dcb8169c95c5b0b458626692679fa21668a09281d2f4a40568c7595917f8ac35268612c674470ea09bda8c557c85ba931a475bfd068dd22167a
@@ -63,7 +63,12 @@ module BoyBand
63
63
  Resque.redis.incr("jobs_from_#{chain[0]}")
64
64
  Resque.redis.expire("jobs_from_#{chain[0]}", 24.hours.to_i)
65
65
  end
66
- chain.push("#{klass.to_s},#{method_name.to_s},#{args.join('+')}")
66
+ Resque.redis.setex("scheduled/#{klass.to_s}/#{job_hash}", 6.hours, "t")
67
+ chain_args = args[0..-2]
68
+ if chain_args.length == 1 && chain_args[0].is_a?(Hash)
69
+ chain_args = [chain_args[0]['method'],chain_args[0]['id'],chain_args[0]['arguments'].to_s[0, 20]]
70
+ end
71
+ chain.push("#{klass.to_s},#{method_name.to_s},#{chain_args.join('+')}")
67
72
  Rails.logger.warn("jobchain set, #{chain[0]} #{chain.join('##')}") if chain.length > 2
68
73
  if chain.length > 5
69
74
  Rails.logger.error("jobchain too deep: #{chain[0]}, #{chain.length} entries")
@@ -134,6 +139,7 @@ module BoyBand
134
139
  klass = Object.const_get(klass_string)
135
140
  method_name = args_copy.shift
136
141
  job_hash = Digest::MD5.hexdigest(args_copy.to_json)
142
+ Resque.redis.del("scheduled/#{klass_string}/#{method_name}/#{job_hash}")
137
143
  hash = args_copy[0] if args_copy[0].is_a?(Hash)
138
144
  hash ||= {'method' => method_name}
139
145
  action = "#{klass_string} . #{hash['method']} (#{hash['id']})"
@@ -261,6 +267,8 @@ module BoyBand
261
267
  end
262
268
 
263
269
  idx = queue_size(queue)
270
+ job_hash = args_copy.to_json
271
+ return true if Resque.redis.get("scheduled/#{klass.to_s}/#{method_name}/#{job_hash}") == "t"
264
272
  return false if idx > 500 # big queues mustn't be searched this way
265
273
  idx = Resque.size(queue)
266
274
  queue_class = (queue == :slow ? 'SlowWorker' : 'Worker')
@@ -402,18 +410,7 @@ module BoyBand
402
410
  end
403
411
 
404
412
  def schedule_once(method, *args)
405
- return nil unless method && id
406
- already_scheduled = Worker.scheduled?(self.class, :perform_action, {
407
- 'id' => id,
408
- 'method' => method,
409
- 'scheduled' => self.class.scheduled_stamp,
410
- 'arguments' => args
411
- })
412
- if !already_scheduled
413
- schedule(method, *args)
414
- else
415
- false
416
- end
413
+ schedule_once_for('default', method, *args)
417
414
  end
418
415
 
419
416
  def schedule_once_for(queue, method, *args)
@@ -464,17 +461,7 @@ module BoyBand
464
461
  end
465
462
 
466
463
  def schedule_once(method, *args)
467
- return nil unless method
468
- already_scheduled = Worker.scheduled?(self, :perform_action, {
469
- 'method' => method,
470
- 'scheduled' => self.scheduled_stamp,
471
- 'arguments' => args
472
- })
473
- if !already_scheduled
474
- schedule(method, *args)
475
- else
476
- false
477
- end
464
+ schedule_once_for('default', method, *args)
478
465
  end
479
466
 
480
467
  def schedule_once_for(queue, method, *args)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boy_band
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Whitmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-25 00:00:00.000000000 Z
11
+ date: 2020-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails