Skip to content

Commit

Permalink
Merge pull request #64 from seomoz/pause_workers
Browse files Browse the repository at this point in the history
Pause workers
  • Loading branch information
myronmarston committed Jan 7, 2013
2 parents 7ae464e + 5a1cb39 commit c6b021f
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -8,3 +8,4 @@ spec/redis.config.yml
bundle
spec/tmp
coverage
bin
4 changes: 4 additions & 0 deletions .rspec
@@ -0,0 +1,4 @@
--color
--order random
--format doc

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
3 changes: 2 additions & 1 deletion lib/qless.rb
Expand Up @@ -135,6 +135,7 @@ class Client
# Lua scripts
attr_reader :_cancel, :_config, :_complete, :_fail, :_failed, :_get, :_heartbeat, :_jobs, :_peek, :_pop
attr_reader :_priority, :_put, :_queues, :_recur, :_retry, :_stats, :_tag, :_track, :_workers, :_depends
attr_reader :_pause, :_unpause
# A real object
attr_reader :config, :redis, :jobs, :queues, :workers

Expand All @@ -145,7 +146,7 @@ def initialize(options = {})
assert_minimum_redis_version("2.5.5")
@config = Config.new(self)
['cancel', 'config', 'complete', 'depends', 'fail', 'failed', 'get', 'heartbeat', 'jobs', 'peek', 'pop',
'priority', 'put', 'queues', 'recur', 'retry', 'stats', 'tag', 'track', 'workers'].each do |f|
'priority', 'put', 'queues', 'recur', 'retry', 'stats', 'tag', 'track', 'workers', 'pause', 'unpause'].each do |f|
self.instance_variable_set("@_#{f}", Lua.new(f, @redis))
end

Expand Down
2 changes: 1 addition & 1 deletion lib/qless/qless-core
Submodule qless-core updated 6 files
+87 −93 README.md
+14 −13 fail.lua
+18 −0 pause.lua
+4 −0 pop.lua
+54 −0 unfail.lua
+12 −0 unpause.lua
8 changes: 8 additions & 0 deletions lib/qless/queue.rb
Expand Up @@ -56,6 +56,14 @@ def heartbeat
def heartbeat=(value)
@client.config["#{@name}-heartbeat"] = value
end

def pause
@client._pause.call([], [name])
end

def unpause
@client._unpause.call([], [name])
end

# Put the described job in this queue
# Options include:
Expand Down
1 change: 1 addition & 0 deletions qless.gemspec
Expand Up @@ -29,6 +29,7 @@ Gem::Specification.new do |s|
s.files += Dir.glob("lib/qless/qless-core/*.lua")
s.files += Dir.glob("bin/**/*")
s.files += Dir.glob("lib/qless/server/**/*")
s.bindir = 'exe'
s.executables = [ "qless-web" ]

s.test_files = s.files.grep(%r{^(test|spec|features)/})
Expand Down
25 changes: 25 additions & 0 deletions spec/integration/qless_spec.rb
Expand Up @@ -2137,6 +2137,31 @@ class FooJob
q.jobs.depends().should eq([])
end
end

describe "#pause" do
it 'stops the given queue from being processed until #unpause is called' do
pausable_queue = client.queues["pausable"]
other_queue = client.queues["other"]

pausable_queue.put(Qless::Job, {})
other_queue.put(Qless::Job, {})

pausable_queue.pause

3.times do
pausable_queue.pop.should be(nil)
pausable_queue.peek.should_not be(nil)
end

other_queue.peek.should_not be(nil)
other_queue.pop.should_not be(nil)

pausable_queue.unpause

pausable_queue.peek.should_not be(nil)
pausable_queue.pop.should_not be(nil)
end
end

describe "#lua" do
it "checks cancel's arguments" do
Expand Down

0 comments on commit c6b021f

Please sign in to comment.