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.

54 lines
1.4 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 log
import threading
lock = threading.RLock()
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:
log.info(f"[{self.source_id}] 数据源初始化版本成功")
else:
log.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()