qu-redis 0.1.0 → 0.1.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.
Files changed (2) hide show
  1. data/lib/qu/backend/redis.rb +29 -19
  2. metadata +44 -76
@@ -15,12 +15,13 @@ module Qu
15
15
  end
16
16
  alias_method :redis, :connection
17
17
 
18
- def enqueue(klass, *args)
19
- job = Job.new(SimpleUUID::UUID.new.to_guid, klass, args)
20
- redis.set("job:#{job.id}", encode('class' => job.klass.to_s, 'args' => job.args))
21
- redis.rpush("queue:#{job.queue}", job.id)
22
- redis.sadd('queues', job.queue)
23
- job
18
+ def enqueue(payload)
19
+ payload.id = SimpleUUID::UUID.new.to_guid
20
+ redis.set("job:#{payload.id}", encode('klass' => payload.klass.to_s, 'args' => payload.args))
21
+ redis.rpush("queue:#{payload.queue}", payload.id)
22
+ redis.sadd('queues', payload.queue)
23
+ logger.debug { "Enqueued job #{payload}" }
24
+ payload
24
25
  end
25
26
 
26
27
  def length(queue = 'default')
@@ -29,7 +30,9 @@ module Qu
29
30
 
30
31
  def clear(queue = nil)
31
32
  queue ||= queues + ['failed']
33
+ logger.info { "Clearing queues: #{queue.inspect}" }
32
34
  Array(queue).each do |q|
35
+ logger.debug "Clearing queue #{q}"
33
36
  redis.srem('queues', q)
34
37
  redis.del("queue:#{q}")
35
38
  end
@@ -42,6 +45,8 @@ module Qu
42
45
  def reserve(worker, options = {:block => true})
43
46
  queues = worker.queues.map {|q| "queue:#{q}" }
44
47
 
48
+ logger.debug { "Reserving job in queues #{queues.inspect}"}
49
+
45
50
  if options[:block]
46
51
  id = redis.blpop(*queues.push(0))[1]
47
52
  else
@@ -51,36 +56,39 @@ module Qu
51
56
  get(id) if id
52
57
  end
53
58
 
54
- def release(job)
55
- redis.rpush("queue:#{job.queue}", job.id)
59
+ def release(payload)
60
+ redis.rpush("queue:#{payload.queue}", payload.id)
56
61
  end
57
62
 
58
- def failed(job, error)
59
- redis.rpush("queue:failed", job.id)
63
+ def failed(payload, error)
64
+ redis.rpush("queue:failed", payload.id)
60
65
  end
61
66
 
62
- def completed(job)
63
- redis.del("job:#{job.id}")
67
+ def completed(payload)
68
+ redis.del("job:#{payload.id}")
64
69
  end
65
70
 
66
71
  def requeue(id)
67
- if job = get(id)
72
+ logger.debug "Requeuing job #{id}"
73
+ if payload = get(id)
68
74
  redis.lrem('queue:failed', 1, id)
69
- redis.rpush("queue:#{job.queue}", id)
70
- job
75
+ redis.rpush("queue:#{payload.queue}", id)
76
+ payload
71
77
  else
72
78
  false
73
79
  end
74
80
  end
75
81
 
76
82
  def register_worker(worker)
83
+ logger.debug "Registering worker #{worker.id}"
77
84
  redis.set("worker:#{worker.id}", encode(worker.attributes))
78
85
  redis.sadd(:workers, worker.id)
79
86
  end
80
87
 
81
- def unregister_worker(id)
82
- redis.del("worker:#{id}")
83
- redis.srem('workers', id)
88
+ def unregister_worker(worker)
89
+ logger.debug "Unregistering worker #{worker.id}"
90
+ redis.del("worker:#{worker.id}")
91
+ redis.srem('workers', worker.id)
84
92
  end
85
93
 
86
94
  def workers
@@ -88,7 +96,9 @@ module Qu
88
96
  end
89
97
 
90
98
  def clear_workers
99
+ logger.info "Clearing workers"
91
100
  while id = redis.spop(:workers)
101
+ logger.debug "Clearing worker #{id}"
92
102
  redis.del("worker:#{id}")
93
103
  end
94
104
  end
@@ -102,7 +112,7 @@ module Qu
102
112
  def get(id)
103
113
  if data = redis.get("job:#{id}")
104
114
  data = decode(data)
105
- Job.new(id, data['class'], data['args'])
115
+ Payload.new(:id => id, :klass => data['klass'], :args => data['args'])
106
116
  end
107
117
  end
108
118
 
metadata CHANGED
@@ -1,112 +1,80 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: qu-redis
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Brandon Keepers
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-23 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: redis-namespace
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70323678030260 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: simple_uuid
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70323678030260
25
+ - !ruby/object:Gem::Dependency
26
+ name: simple_uuid
27
+ requirement: &70323678029840 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: qu
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70323678029840
36
+ - !ruby/object:Gem::Dependency
37
+ name: qu
38
+ requirement: &70323678029360 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
55
- - - "="
56
- - !ruby/object:Gem::Version
57
- hash: 27
58
- segments:
59
- - 0
60
- - 1
61
- - 0
62
- version: 0.1.0
40
+ requirements:
41
+ - - =
42
+ - !ruby/object:Gem::Version
43
+ version: 0.1.1
63
44
  type: :runtime
64
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *70323678029360
65
47
  description: Redis backend for qu
66
- email:
48
+ email:
67
49
  - brandon@opensoul.org
68
50
  executables: []
69
-
70
51
  extensions: []
71
-
72
52
  extra_rdoc_files: []
73
-
74
- files:
53
+ files:
75
54
  - lib/qu-redis.rb
76
55
  - lib/qu/backend/redis.rb
77
- has_rdoc: true
78
56
  homepage: http://github.com/bkeepers/qu
79
57
  licenses: []
80
-
81
58
  post_install_message:
82
59
  rdoc_options: []
83
-
84
- require_paths:
60
+ require_paths:
85
61
  - lib
86
- required_ruby_version: !ruby/object:Gem::Requirement
62
+ required_ruby_version: !ruby/object:Gem::Requirement
87
63
  none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- hash: 3
92
- segments:
93
- - 0
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
69
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
104
74
  requirements: []
105
-
106
75
  rubyforge_project:
107
- rubygems_version: 1.6.1
76
+ rubygems_version: 1.8.6
108
77
  signing_key:
109
78
  specification_version: 3
110
79
  summary: Redis backend for qu
111
80
  test_files: []
112
-