Skip to content

arngarden/locker_room

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

Locker Room

Locker Room is a shared lock manager that uses MongoDB to store the locks. This makes it possible for resources on a network to share the same locks.

Usage

import locker_room
locker = locker_room.LockerRoom(host='server1')

with locker.lock_and_release('my_lock', owner='gustav', timeout=2, expire=60):
    # do important stuff

It is also possible to use the locker as a function decorator:

@locker.lock_and_release('my_lock'):
def important_function():
    # do important stuff

Or you can call the lock and release-methods explicitly:

locker.lock('my_lock', timeout=2)
# do stuff
locker.release('my_lock')

To find out the status of a lock, use the status-method:

locker.status('my_lock')
>> {u'owner': u'gustav', u'timestamp': datetime.datetime(2014, 4, 17, 14, 6, 8, 291000), 
    u'_id': u'my_lock',  u'locked': True}

The optional expire-parameter can be used to set a limit (in seconds) for how long a lock can be held before the lock holder is assumed to be dead and the lock can then be stolen by the next requester. By calling the touch-method a long-lived process can delay the expiration.

Setup and requirements

Locker Room needs access to MongoDB.

For function decorator to work you need contextlib2, if you are using Python 2.7.

About

Distributed lock manager using MongoDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages