Using DynamoDB, it implements a simple semaphore that can be used to coordinate access to shared data from multiple concurrent hosts or processes.
require 'dynamodb-mutex'
DynamoDBMutex.with_lock :your_lock do
# Access to shared resource.
end
If no lock name (:your_lock
above) is given, #with_lock
uses
'default.lock'
.
You can pass with_lock
the following options:
:wait_for_other
(default1
): Seconds to to wait for another process to release the lock.:polling_interval
(default0.1
): Seconds between retrials to acquire lock. Should be at least "(:wait_for_other / 5) * (no_of_instances - 1)
".:stale_after
(default10
): Seconds after which the lock is considered stale and will be automatically deleted; set to "falsey" (nil
orfalse
) to disable.