You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/5/9 14:22
# @Author : old tom
# @File : metadata_version.py
# @Project : futool-tiny-datahub
# @Desc : 元数据版本管理
from datahub.metadata.metadatadao.metadata_version_dao import MetadataVersionDao
from datahub.local_db_conf import local_conn
from datahub.log_conf import Logger
import threading
lock = threading.RLock()
logger = Logger().get_logger()
class MetadataVersionKeeper(object):
"""
元数据版本管理器
"""
def __init__(self, source_id):
self.source_id = source_id
self.dao = MetadataVersionDao(local_conn)
def init_version(self):
"""
初始化版本号
:return:
"""
flag = self.dao.init_version(self.source_id) == 1
if flag:
logger.info(f"[{self.source_id}] 数据源初始化版本成功")
else:
logger.error(f"[{self.source_id}] 数据源初始化版本失败")
def get_latest_version(self):
"""
获取最新版本
:return:
"""
return self.dao.query_latest_version(self.source_id)
def increase_version(self):
"""
递增并返回最新版本
加锁操作
:return:
"""
try:
lock.acquire()
return self.dao.add_version(self.source_id)
finally:
lock.release()
if __name__ == '__main__':
version_keeper = MetadataVersionKeeper('834164a2d62de959c0261e6239dd1e55')
# 多线程测试
# for i in range(100):
# print(version_keeper.increase_version())