Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: dccccc7bd0
Fetching contributors…

Cannot retrieve contributors at this time

50 lines (32 sloc) 1.942 kb

resque-restriction

Resque Restriction is a plugin for the Resque queueing system (http://github.com/defunkt/resque). It adds two functions:

  1. it will limit the execution number of certain jobs in a period time. For example, it can limit a certain job can be executed 1000 times per day, 100 time per hour and 30 times per 300 seconds.

  2. it will execute the exceeded jobs at the next period. For example, you restrict the email sending jobs to run 1000 times per day. If your system generates 1010 email sending jobs, only 1000 email sending jobs can be executed today, and the other 10 email sending jobs will be executed tomorrow.

Resque Restriction requires Resque 1.7.0.

To use

The job you wish to restrict should inherit from Resque::Plugins::RestrictionJob class and add restrict definition. Example:

class MyRestrictionJob < Resque::Plugins::RestrictionJob
  restrict :per_day => 1000, :per_hour => 1000, :per_300 => 30

  #rest of your class here
end

MyRestrictionJob can be run 1000 times per day, 100 times per hour and 30 times per 300 seconds.

The argument of restrict method is a hash, the key of the hash is a period time, including :per_minute, :per_hour, :per_day, :per_week, :per_month, :per_year, and you can also define any period like :per_300 means per 300 seconds. the value of the hash is the job execution limit number in a period.

Contributing

Once you've made your commits:

  1. Fork Resque Restriction
  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!

Author

Richard Huang :: flyerhzm@gmail.com :: @flyerhzm

Copyright

Copyright (c) 2010 Richard Huang. See LICENSE for details.

Jump to Line
Something went wrong with that request. Please try again.