Class: Delayed::Backend::CouchrestModel::Job
- Inherits:
-
CouchRest::Model::Base
- Object
- CouchRest::Model::Base
- Delayed::Backend::CouchrestModel::Job
- Includes:
- Base
- Defined in:
- lib/delayed/backend/couchrest_model.rb
Class Method Summary collapse
- .clear_locks!(worker_name) ⇒ Object
- .db_time_now ⇒ Object
- .delete_all ⇒ Object
- .find_available(worker_name, limit = 5, max_run_time = ::Delayed::Worker.max_run_time) ⇒ Object
Instance Method Summary collapse
Class Method Details
.clear_locks!(worker_name) ⇒ Object
42 43 44 45 46 |
# File 'lib/delayed/backend/couchrest_model.rb', line 42 def self.clear_locks!(worker_name) jobs = my_jobs worker_name jobs.each { |j| j.locked_by, j.locked_at = nil, nil; } database.bulk_save jobs end |
.db_time_now ⇒ Object
32 |
# File 'lib/delayed/backend/couchrest_model.rb', line 32 def self.db_time_now; Time.now.utc; end |
.delete_all ⇒ Object
47 48 49 |
# File 'lib/delayed/backend/couchrest_model.rb', line 47 def self.delete_all database.bulk_save all.each { |doc| doc['_deleted'] = true } end |
.find_available(worker_name, limit = 5, max_run_time = ::Delayed::Worker.max_run_time) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/delayed/backend/couchrest_model.rb', line 33 def self.find_available(worker_name, limit = 5, max_run_time = ::Delayed::Worker.max_run_time) ready = ready_jobs mine = my_jobs worker_name expire = expired_jobs max_run_time jobs = (ready + mine + expire)[0..limit-1].sort_by { |j| j.priority } jobs = jobs.find_all { |j| j.priority >= Worker.min_priority } if Worker.min_priority jobs = jobs.find_all { |j| j.priority <= Worker.max_priority } if Worker.max_priority jobs end |
Instance Method Details
#lock_exclusively!(max_run_time, worker = worker_name) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/delayed/backend/couchrest_model.rb', line 51 def lock_exclusively!(max_run_time, worker = worker_name) return false if locked_by_other?(worker) and not expired?(max_run_time) case when locked_by_me?(worker) self.locked_at = self.class.db_time_now when (unlocked? or (locked_by_other?(worker) and expired?(max_run_time))) self.locked_at, self.locked_by = self.class.db_time_now, worker end save rescue RestClient::Conflict false end |