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.
@@ -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
+