dyndbmutex.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:lambda-mutex 作者: chiradeep 项目源码 文件源码
def write_lock_item(self, lockname, caller, waitms):
        expire_ts = timestamp_millis() + waitms
        logger.debug("Write_item: lockname=" + lockname + ", caller=" +
                     caller + ", Expire time is " + str(expire_ts))
        try:
            self.get_table().put_item(
                Item={
                    'lockname': lockname,
                    'expire_ts': expire_ts,
                    'holder': caller
                },
                # TODO: adding Attr("holder").eq(caller) should make it re-entrant
                ConditionExpression=Attr("holder").eq(NO_HOLDER) | Attr('lockname').not_exists()
            )
        except botocore.exceptions.ClientError as e:
            if e.response['Error']['Code'] == 'ConditionalCheckFailedException':
                logger.warn("Write_item: lockname=" + lockname +
                             ", caller=" + caller + ", lock is being held")
                return False
        logger.debug("Write_item: lockname=" + lockname +
                     ", caller=" + caller + ", lock is acquired")
        return True
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号