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
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()
|