module RocketJob::Batch::Throttle
Rocket Job
Batch
Throttling Framework.
Example:
# Do not run any slices for this job when the MySQL slave delay exceeds 5 minutes. class MyJob < RocketJob::Job include RocketJob::Batch # Define a custom mysql throttle # Prevents all slices from this job from running on the current server. define_batch_throttle :mysql_throttle_exceeded? def perform(record) # .... end private # Returns true if the MySQL slave delay exceeds 5 minutes def mysql_throttle_exceeded? status = ActiveRecord::Base.connection.connection.select_one('show slave status') seconds_delay = Hash(status)['Seconds_Behind_Master'].to_i seconds_delay >= 300 end end