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 简单实现分布式锁
最新推荐文章于 2023-08-09 14:08:14 发布