resque-priority-jobs 0.2 → 0.2.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.
- data/lib/resque-priority-jobs/queue.rb +23 -3
- data/lib/resque-priority-jobs/version.rb +1 -1
- data/lib/resque-priority-jobs.rb +3 -3
- metadata +87 -99
|
@@ -19,10 +19,31 @@ module Resque
|
|
|
19
19
|
alias :pop_without_priority :pop
|
|
20
20
|
alias :pop :pop_with_priority
|
|
21
21
|
|
|
22
|
-
# not optimial has an extra redis call for priority call. Assumtion is that there are lesser queues using priority
|
|
23
22
|
def length
|
|
24
|
-
@redis.
|
|
23
|
+
@redis.type(@redis_name) == 'list' ? @redis.llen(@redis_name) : @redis.zcard(@redis_name)
|
|
25
24
|
end
|
|
25
|
+
alias :size :length
|
|
26
|
+
|
|
27
|
+
def slice_with_priority(start, length)
|
|
28
|
+
if @redis.type(@redis_name) == 'zset'
|
|
29
|
+
if length == 1
|
|
30
|
+
synchronize do
|
|
31
|
+
@redis.zrangebyscore(@redis_name, '-inf', '+inf', :limit =>[0,1] )
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
synchronize do
|
|
35
|
+
Array(@redis.zrangebyscore(@redis_name, '-inf', '+inf', :limit => [0, length])).map do |item|
|
|
36
|
+
decode item
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
else
|
|
41
|
+
slice_without_priority(start, length)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
alias :slice_without_priority :slice
|
|
46
|
+
alias :slice :slice_with_priority
|
|
26
47
|
|
|
27
48
|
# To identify whether a queue is priority queue or not. Empty queues are always non-priority
|
|
28
49
|
# Assumption : Once a queue type is set to be a priority queue, it cannot be changed and vice-versa.
|
|
@@ -35,6 +56,5 @@ module Resque
|
|
|
35
56
|
type = @redis.type(@redis_name)
|
|
36
57
|
type == 'none' ? nil : type
|
|
37
58
|
end
|
|
38
|
-
|
|
39
59
|
end
|
|
40
60
|
end
|
data/lib/resque-priority-jobs.rb
CHANGED
|
@@ -10,7 +10,7 @@ MAX_PRIORITY = 1
|
|
|
10
10
|
module Resque
|
|
11
11
|
# Queues which need priority scheduling need to use this method instead of enqueue
|
|
12
12
|
#FIXME: Known issue - If a use is already enqueued without priority and then we do a enqueue with priority we get an error of different datatype from redis.
|
|
13
|
-
def enqueue_with_priority
|
|
13
|
+
def enqueue_with_priority(klass, priority = MIN_PRIORITY, *args)
|
|
14
14
|
queue = queue_from_class(klass)
|
|
15
15
|
before_hooks = Plugin.before_enqueue_hooks(klass).collect do |hook|
|
|
16
16
|
klass.send(hook, *args)
|
|
@@ -26,12 +26,12 @@ module Resque
|
|
|
26
26
|
return true
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def push_with_priority
|
|
29
|
+
def push_with_priority(queue, priority, item)
|
|
30
30
|
queue(queue).push_with_priority priority, item
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
class JobFetch
|
|
34
|
-
def self.fetch_one_job
|
|
34
|
+
def self.fetch_one_job(redis, queue)
|
|
35
35
|
#lua script to get item with maximum priority
|
|
36
36
|
get_and_rem = "local resp = redis.call('zrangebyscore', KEYS[1], '-inf', '+inf', 'LIMIT', '0', '1');
|
|
37
37
|
if (resp[1] ~= nil) then
|
metadata
CHANGED
|
@@ -1,120 +1,108 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resque-priority-jobs
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.2'
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
5
4
|
prerelease:
|
|
5
|
+
version: 0.2.1
|
|
6
6
|
platform: ruby
|
|
7
|
-
authors:
|
|
8
|
-
- rajofchennai
|
|
7
|
+
authors:
|
|
8
|
+
- rajofchennai
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- - ! '>='
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
- !ruby/object:Gem::Dependency
|
|
63
|
-
name: systemtimer
|
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
|
-
requirements:
|
|
67
|
-
- - ! '>='
|
|
68
|
-
- !ruby/object:Gem::Version
|
|
69
|
-
version: '0'
|
|
70
|
-
type: :development
|
|
71
|
-
prerelease: false
|
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
|
-
requirements:
|
|
75
|
-
- - ! '>='
|
|
76
|
-
- !ruby/object:Gem::Version
|
|
77
|
-
version: '0'
|
|
12
|
+
|
|
13
|
+
date: 2012-09-21 00:00:00 Z
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: resque
|
|
17
|
+
prerelease: false
|
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
19
|
+
none: false
|
|
20
|
+
requirements:
|
|
21
|
+
- - ">="
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: "0"
|
|
24
|
+
type: :runtime
|
|
25
|
+
version_requirements: *id001
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rspec
|
|
28
|
+
prerelease: false
|
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
30
|
+
none: false
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: "0"
|
|
35
|
+
type: :development
|
|
36
|
+
version_requirements: *id002
|
|
37
|
+
- !ruby/object:Gem::Dependency
|
|
38
|
+
name: facets
|
|
39
|
+
prerelease: false
|
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: "0"
|
|
46
|
+
type: :development
|
|
47
|
+
version_requirements: *id003
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
49
|
+
name: systemtimer
|
|
50
|
+
prerelease: false
|
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: "0"
|
|
57
|
+
type: :development
|
|
58
|
+
version_requirements: *id004
|
|
78
59
|
description: resque plugin to have priority in the queue
|
|
79
|
-
email:
|
|
80
|
-
- rajofchennai@yahoo.com
|
|
60
|
+
email:
|
|
61
|
+
- rajofchennai@yahoo.com
|
|
81
62
|
executables: []
|
|
63
|
+
|
|
82
64
|
extensions: []
|
|
65
|
+
|
|
83
66
|
extra_rdoc_files: []
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- Gemfile
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
- lib/resque-priority-jobs
|
|
92
|
-
- lib/resque-priority-jobs/
|
|
93
|
-
- lib/resque-priority-jobs/
|
|
94
|
-
- lib/resque-priority-jobs/
|
|
95
|
-
- resque-priority-jobs.
|
|
96
|
-
|
|
67
|
+
|
|
68
|
+
files:
|
|
69
|
+
- Gemfile
|
|
70
|
+
- Gemfile.lock
|
|
71
|
+
- LICENSE
|
|
72
|
+
- README.md
|
|
73
|
+
- Rakefile
|
|
74
|
+
- lib/resque-priority-jobs.rb
|
|
75
|
+
- lib/resque-priority-jobs/job.rb
|
|
76
|
+
- lib/resque-priority-jobs/multi_queue.rb
|
|
77
|
+
- lib/resque-priority-jobs/queue.rb
|
|
78
|
+
- lib/resque-priority-jobs/version.rb
|
|
79
|
+
- resque-priority-jobs.gemspec
|
|
80
|
+
homepage: ""
|
|
97
81
|
licenses: []
|
|
82
|
+
|
|
98
83
|
post_install_message:
|
|
99
84
|
rdoc_options: []
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
85
|
+
|
|
86
|
+
require_paths:
|
|
87
|
+
- lib
|
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
89
|
none: false
|
|
104
|
-
requirements:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
|
+
requirements:
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: "0"
|
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
95
|
none: false
|
|
110
|
-
requirements:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
96
|
+
requirements:
|
|
97
|
+
- - ">="
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: "0"
|
|
114
100
|
requirements: []
|
|
101
|
+
|
|
115
102
|
rubyforge_project:
|
|
116
|
-
rubygems_version: 1.8.
|
|
103
|
+
rubygems_version: 1.8.15
|
|
117
104
|
signing_key:
|
|
118
105
|
specification_version: 3
|
|
119
106
|
summary: This plugin can be used to have priority inside a queue for resques
|
|
120
107
|
test_files: []
|
|
108
|
+
|