from pymongo import MongoClient, ASCENDING
from pymongo.errors import DuplicateKeyError
import time
from datetime import datetime
import threading
my_client = MongoClient("mongodb://172.16.1.10:27017/")
class DistributeLock(object):
_id = ""
def __init__(self, key):
self._key = key
self._my_doc = my_client['lock']['lock']
self._my_doc.create_index([('key', ASCENDING)], unique=True)
def lock(self, timeout=120):
timestamp = time.time()
while True:
if timeout > 0:
s = (datetime.fromtimestamp(time.time()) - datetime.fromtimestamp(timestamp)).seconds
if s >= timeout:
print("超时等待...")
break
try:
res = self._my_doc.insert_one({'key': self._key, 'timestamp': timestamp, 'timeout'
Python3 利用MongoDB 简单实现分布式锁
最新推荐文章于 2024-06-13 20:40:05 发布
本文详细介绍了如何使用Python3结合MongoDB来创建和管理分布式锁,包括锁的获取、释放以及在并发环境中的应用,为分布式系统提供可靠的数据同步策略。
摘要由CSDN通过智能技术生成