resque-throttle is an extension to the resque queue system that restricts the frequency in which certain jobs are run
Switch branches/tags
Nothing to show
Clone or download
Latest commit 80f11ca Oct 19, 2015



Resque Throttle is a plugin for the Resque queueing system ( It adds a ThrottledJob class that will limit the amount of times it can be enqueued per class.

To use

The job you wish to throttle should inherit from the Resque::ThrottledJob class.

In your class, add the can_run_every in which the job should be throttled. Example:

class MyThrottledJob < Resque::ThrottledJob
  throttle :can_run_every => 24.hours

  #rest of your class here

By default, the key which identifies the job is simply the class name. This "identifier" is stored in a redis key with a TTL equal to that of the can_run_every. Thus the default behavior is a single Job class inheriting from Resque::ThrottledJob can only run every 30 minutes.

If you'd like to override that to be more granular, you can do that in the identifier class method by returning a string. For example, if you want the job to be limited to once a day per account, do something like the following:

class MyThrottledJob < Resque::ThrottledJob
  throttle :can_run_every => 24.hours

  def self.identifier(*args)
    account_id = *args

  #rest of your class here

The *args passed to identifier are the same arguments that are passed to perform.

When a job is throttled, it will raise a ThrottledError and the job will not be enqueued.


Once you've made your commits:

  1. Fork Resque Throttle
  2. Create a topic branch - git checkout -b my_branch
  3. Push to your branch - git push origin my_branch
  4. Create an Issue with a link to your branch
  5. That's it!


Scott J. Tamosunas :: :: @scotttam


Copyright (c) 2010 Scott J. Tamosunas. See LICENSE for details.