Created
June 25, 2012 00:44
-
-
Save mikeabiezzi/2985749 to your computer and use it in GitHub Desktop.
Patch to Resque that stops workers from picking up a new job when Resque is "paused"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
irb(main):001:0> Resque.enqueue Job, 1, 9 | |
=> true | |
irb(main):002:0> Resque.enqueue Job, 10, 19 | |
=> true | |
irb(main):003:0> Resque.enqueue Job, 20, 29 | |
=> true | |
irb(main):004:0> Resque.enqueue Job, 30, 39 | |
=> true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
app[worker.1]: *** got: (Job{jobs} | Job | [1, 9]) | |
heroku[run.2]: Process exited with status 0 | |
app[worker.1]: Processed 1 | |
heroku[run.2]: State changed from up to complete | |
app[worker.1]: Processed 2 | |
app[worker.1]: Processed 3 | |
app[worker.1]: Processed 4 | |
app[worker.1]: Processed 5 | |
app[worker.1]: Processed 6 | |
app[worker.1]: Processed 7 | |
app[worker.1]: Processed 8 | |
app[worker.1]: Processed 9 | |
app[worker.1]: *** done: (Job{jobs} | Job | [1, 9]) | |
app[worker.1]: *** got: (Job{jobs} | Job | [10, 19]) | |
app[worker.1]: Processed 10 | |
app[worker.1]: Processed 11 | |
app[worker.1]: Processed 12 | |
heroku[run.2]: State changed from created to starting | |
app[worker.1]: Processed 13 | |
app[worker.1]: Processed 14 | |
app[worker.1]: Processed 15 | |
heroku[run.2]: Awaiting client | |
heroku[run.2]: Starting process `bundle exec rake resque:pause` | |
heroku[run.2]: State changed from starting to up | |
app[worker.1]: Processed 16 | |
app[worker.1]: Processed 17 | |
app[worker.1]: Processed 18 | |
app[worker.1]: Processed 19 | |
app[worker.1]: *** done: (Job{jobs} | Job | [10, 19]) | |
app[worker.1]: *** got: (Job{jobs} | Job | [20, 29]) | |
app[worker.1]: Processed 20 | |
app[worker.1]: Processed 21 | |
heroku[run.2]: Process exited with status 0 | |
heroku[run.2]: State changed from up to complete | |
app[worker.1]: Processed 22 | |
app[worker.1]: Processed 23 | |
app[worker.1]: Processed 24 | |
app[worker.1]: Processed 25 | |
app[worker.1]: Processed 26 | |
app[worker.1]: Processed 27 | |
app[worker.1]: Processed 28 | |
app[worker.1]: Processed 29 | |
app[worker.1]: *** done: (Job{jobs} | Job | [20, 29]) | |
heroku[run.2]: State changed from created to starting | |
heroku[run.2]: Awaiting client | |
heroku[run.2]: Starting process `bundle exec rake resque:resume` | |
heroku[run.2]: State changed from starting to up | |
app[worker.1]: *** got: (Job{jobs} | Job | [30, 39]) | |
heroku[run.2]: Process exited with status 0 | |
heroku[run.2]: State changed from up to complete | |
app[worker.1]: Processed 30 | |
app[worker.1]: Processed 31 | |
app[worker.1]: Processed 32 | |
app[worker.1]: Processed 33 | |
app[worker.1]: Processed 34 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
task "resque:pause" => :environment do | |
Resque.redis.set "resque_paused", true | |
puts "Resque paused." | |
end | |
task "resque:resume" => :environment do | |
Resque.redis.set "resque_paused", false | |
puts "Resque resumed." | |
end | |
task "resque:paused" => :environment do | |
paused = Resque.redis.get("resque_paused") == 'true' | |
puts "Resque paused: #{paused}" | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Resque | |
class Worker | |
alias :original_reserve :reserve | |
def reserve( *args ) | |
unless Resque.redis.get("resque_paused") == "true" | |
self.original_reserve *args | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment