tasks.rb
1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace :jobs do
desc "Clear the delayed_job queue."
task :clear => :environment do
Delayed::Job.delete_all
end
desc "Start a delayed_job worker."
task :work => :environment_options do
Delayed::Worker.new(@worker_options).start
end
desc "Start a delayed_job worker and exit when all available jobs are complete."
task :workoff => :environment_options do
Delayed::Worker.new(@worker_options.merge({:exit_on_complete => true})).start
end
task :environment_options => :environment do
@worker_options = {
:min_priority => ENV['MIN_PRIORITY'],
:max_priority => ENV['MAX_PRIORITY'],
:queues => (ENV['QUEUES'] || ENV['QUEUE'] || '').split(','),
:quiet => false
}
end
desc "Exit with error status if any jobs older than max_age seconds haven't been attempted yet."
task :check, [:max_age] => :environment do |_, args|
args.with_defaults(:max_age => 300)
unprocessed_jobs = Delayed::Job.where('attempts = 0 AND created_at < ?', Time.now - args[:max_age].to_i).count
if unprocessed_jobs > 0
fail "#{unprocessed_jobs} jobs older than #{args[:max_age]} seconds have not been processed yet"
end
end
end