No commit activity in last 3 years
No release in over 3 years
A resque plugin for limiting how many of a specific job can run concurrently
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 1.25
 Project Readme

resque-concurrent-restriction

Resque Concurrent Restriction is a plugin for the Resque queueing system. It allows one to specify how many of the given job can run concurrently.

Resque Concurrent Restriction requires Resque 1.25 and redis 2.2

Build Status

Install

Install it from the command-line:

gem install resque-concurrent-restriction

or add it to your Gemfile:

gem 'resque-concurrent-restriction', '~> 0.6'

To use

It is especially useful when a system has intensive jobs for which you should only run a few at a time. What you should do for the IntensiveJob is to make it extend Resque::Plugins::ConcurrentRestriction and specify the concurrent limit (defaults to 1). For example:

class IntensiveJob
  extend Resque::Plugins::ConcurrentRestriction
  concurrent 4

  def perform
    # ...
  end
end

That means the IntensiveJob can not have more than 4 jobs running simultaneously.

One can also make the concurrency limit depend on the parameters of a job. For example, if you always pass a user_id as the first parameter, you can restrict the job to run N concurrent jobs per user:

class IntensiveJob
  extend Resque::Plugins::ConcurrentRestriction
  concurrent 4

  def self.concurrent_identifier(*args)
    args.first.to_s
  end

  def perform
    # ...
  end
end

Author

Code was originally forked from the resque-restriction plugin (Richard Huang :: flyerhzm@gmail.com :: @flyerhzm), but diverged enough that it warranted being its own plugin to keep the code simple.

Matt Conway :: matt@conwaysplace.com :: @mattconway

Copyright

Copyright (c) 2011 Matt Conway. See LICENSE for details.