def lock(self, key, owner, timeout=None, expire=None): if not self.locker: db = self.mongo_database() self.locker = MongoLock(client=db.client, db=db.name) try: with self.locker(key, owner, timeout=timeout, expire=expire): yield except MongoLockLocked: #lock_doc = self.locker.get_lock_info(key) raise errors.Locked(key=key, owner=owner) finally: self.locker.release(key, owner)