Module: Resque::Plugins::PopulationControl
- Defined in:
- lib/resque/plugins/population_control.rb
Defined Under Namespace
Classes: PopulationExceeded
Constant Summary
collapse
- VERSION =
"0.7.0"
Instance Method Summary
collapse
Instance Method Details
39
40
41
|
# File 'lib/resque/plugins/population_control.rb', line 39
def after_perform_population_control *args
population_control_decrement
end
|
#before_enqueue_population_control(*args) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/resque/plugins/population_control.rb', line 25
def before_enqueue_population_control *args
population_control_count = population_control_increment
if population_control_count > population_control_max
population_control_decrement
if respond_to? :on_population_exceeded
on_population_exceeded(population_control_max, *args)
end
unless @population_control_options[:suppress_exceptions]
raise PopulationExceeded, "Enqueuing #{name} would exceed max allowed population of #{population_control_max}."
end
false
end
end
|
#max_population? ⇒ Boolean
21
22
23
|
# File 'lib/resque/plugins/population_control.rb', line 21
def max_population?
population_control_count >= population_control_max
end
|
#on_failure_population_control(e, *args) ⇒ Object
43
44
45
|
# File 'lib/resque/plugins/population_control.rb', line 43
def on_failure_population_control e, *args
population_control_decrement
end
|
#population_control(max, options = {}) ⇒ Object
8
9
10
11
|
# File 'lib/resque/plugins/population_control.rb', line 8
def population_control max, options = {}
@population_control_max = max
@population_control_options = options
end
|
#population_control_cache_key ⇒ Object
67
68
69
|
# File 'lib/resque/plugins/population_control.rb', line 67
def population_control_cache_key
"population_control_count_for_#{name}"
end
|
#population_control_clear ⇒ Object
17
18
19
|
# File 'lib/resque/plugins/population_control.rb', line 17
def population_control_clear
population_control_redis.del population_control_cache_key
end
|
#population_control_count ⇒ Object
59
60
61
|
# File 'lib/resque/plugins/population_control.rb', line 59
def population_control_count
population_control_redis.get(population_control_cache_key).to_i
end
|
#population_control_decrement ⇒ Object
55
56
57
|
# File 'lib/resque/plugins/population_control.rb', line 55
def population_control_decrement
population_control_redis.set population_control_cache_key, 0 if population_control_redis.decr(population_control_cache_key) <= 0
end
|
#population_control_increment ⇒ Object
51
52
53
|
# File 'lib/resque/plugins/population_control.rb', line 51
def population_control_increment
population_control_redis.incr population_control_cache_key
end
|
#population_control_max ⇒ Object
47
48
49
|
# File 'lib/resque/plugins/population_control.rb', line 47
def population_control_max
@population_control_max
end
|
#population_control_redis ⇒ Object
63
64
65
|
# File 'lib/resque/plugins/population_control.rb', line 63
def population_control_redis
@population_control_redis ||= Resque.redis.redis
end
|
#population_controlled? ⇒ Boolean
13
14
15
|
# File 'lib/resque/plugins/population_control.rb', line 13
def population_controlled?
population_control_count <= population_control_max
end
|