resque-priority-jobs 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.llen @redis_name rescue @redis.zcard @redis_name
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
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Priority
3
3
  module Jobs
4
- VERSION = "0.2"
4
+ VERSION = "0.2.1"
5
5
  end
6
6
  end
7
7
  end
@@ -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 klass, priority = MIN_PRIORITY, *args
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 queue, priority, item
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 redis, queue
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
- date: 2012-09-17 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: resque
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: rspec
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: facets
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
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
- files:
85
- - Gemfile
86
- - Gemfile.lock
87
- - LICENSE
88
- - README.md
89
- - Rakefile
90
- - lib/resque-priority-jobs.rb
91
- - lib/resque-priority-jobs/job.rb
92
- - lib/resque-priority-jobs/multi_queue.rb
93
- - lib/resque-priority-jobs/queue.rb
94
- - lib/resque-priority-jobs/version.rb
95
- - resque-priority-jobs.gemspec
96
- homepage: ''
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
- require_paths:
101
- - lib
102
- required_ruby_version: !ruby/object:Gem::Requirement
85
+
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
103
89
  none: false
104
- requirements:
105
- - - ! '>='
106
- - !ruby/object:Gem::Version
107
- version: '0'
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
- - !ruby/object:Gem::Version
113
- version: '0'
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "0"
114
100
  requirements: []
101
+
115
102
  rubyforge_project:
116
- rubygems_version: 1.8.24
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
+