Resque Pause
A Resque plugin. Requires Resque 1.9.10.
resque-pause adds functionality to pause resque jobs through the web interface.
Using a pause
allows you to stop the job for a slice of time.
The job finish the process it are doing and don't get a new task to do,
until the queue is released.
You can use this functionality to do some maintenance whithout kill workers, for example.
Usage / Examples
Single Job Instance
require 'resque-pause'
class UpdateNetworkGraph
extend Resque::Plugins::Pause
@queue = :network_graph
def self.perform(repo_id)
heavy_lifting
end
end
Pause is achieved by storing a pause/queue key in Redis.
Default behaviour...
- When the job instance try to execute and the queue is paused, the job is paused for a slice of time.
- If the queue still paused after this time the job will abort and will be enqueued again with the same arguments.
Resque-Web integration
You have to load ResquePause to enable the Pause tab.
require 'resque_pause'
Customise & Extend
Job pause check interval
The slice of time the job will wait for queue be unpaused before abort the job could be changed with attribute @pause_check_interval.
By default the time is 10 seconds.
You can define the attribute in your job class in seconds.
class UpdateNetworkGraph
extend Resque::Plugins::Pause
@queue = :network_graph
@pause_check_interval = 30
def self.perform(repo_id)
heavy_lifting
end
end
The above modification will ensure the job will wait for 30 seconds before abort.
Install
$ gem install resque-pause