Module: ResqueSerial::Lockable
- Included in:
- SyncJob
- Defined in:
- lib/resque-serial/lockable.rb
Instance Method Summary collapse
- #around_perform_lock(*args) ⇒ Object
- #before_perform_lock(*args) ⇒ Object
- #clear_lock(*args) ⇒ Object
- #get_lock(*args) ⇒ Object
- #lock_key(*args) ⇒ Object
- #lock_timeout ⇒ Object
- #on_failure_lock(exception, *args) ⇒ Object
- #requeue_perform_delay ⇒ Object
Instance Method Details
#around_perform_lock(*args) ⇒ Object
38 39 40 41 42 |
# File 'lib/resque-serial/lockable.rb', line 38 def around_perform_lock(*args) yield ensure clear_lock(*args) end |
#before_perform_lock(*args) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/resque-serial/lockable.rb', line 20 def before_perform_lock(*args) if lock_key *args if Resque.redis.setnx get_lock(*args), true Resque.redis.expire get_lock(*args), lock_timeout else sleep requeue_perform_delay Resque.enqueue self, *args raise Resque::Job::DontPerform end end end |
#clear_lock(*args) ⇒ Object
34 35 36 |
# File 'lib/resque-serial/lockable.rb', line 34 def clear_lock(*args) Resque.redis.del(get_lock(*args)) end |
#get_lock(*args) ⇒ Object
12 13 14 |
# File 'lib/resque-serial/lockable.rb', line 12 def get_lock(*args) "lock:"+lock_key(*args).to_s end |
#lock_key(*args) ⇒ Object
8 9 10 |
# File 'lib/resque-serial/lockable.rb', line 8 def lock_key(*args) raise NotImplementedError end |
#lock_timeout ⇒ Object
4 5 6 |
# File 'lib/resque-serial/lockable.rb', line 4 def lock_timeout 3600 end |
#on_failure_lock(exception, *args) ⇒ Object
44 45 46 |
# File 'lib/resque-serial/lockable.rb', line 44 def on_failure_lock(exception, *args) clear_lock(*args) end |
#requeue_perform_delay ⇒ Object
16 17 18 |
# File 'lib/resque-serial/lockable.rb', line 16 def requeue_perform_delay 1.0 end |