1 Star 3 Fork 3

maxinDev/ccbBoot

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ccb_boot.py 2.77 KB
一键复制 编辑 原始数据 按行查看 历史
maxinDev 提交于 2023-05-05 06:28 . update ccb_boot.py.
import os
import sys
import requests
import json
from json import JSONEncoder
import logging
import logging.handlers
import fileinput
import zipfile
import importlib
# 日志模块
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logFormat = logging.Formatter("%(message)s")
# 日志输出流
stream = logging.StreamHandler()
stream.setFormatter(logFormat)
logger.addHandler(stream)
update_py_url = ''
py_dir = 'ccb_py'
py_name = 'ccb.zip'
version_dir = f'{py_dir}/version'
#update_version_url = 'http://127.0.0.1:5000/ccb/api/updatePy'
def env(key):
return os.environ.get(key)
# 1. 获取下载地址,并判断版本号,是否需要更新
# 2. 下载最新脚本文件
# 3. 解压文件
#获取本地的版本号
def getLocaVersion():
version = '0'
basepath = os.path.dirname(__file__)
version_file_path = os.path.join(basepath, version_dir)
try:
if os.path.exists(version_file_path):
with fileinput.input(files=(version_file_path,)) as file:
version = file[0]
except Exception as e:
logger.error('获取脚本版本号失败!',e)
return version
def updateVersion(update_version_url):
resp = requests.get(f'{update_version_url}?version={getLocaVersion()}', stream=True,verify=False)
if(resp.status_code == 201):
return True
elif(resp.ok):
basepath = os.path.dirname(__file__)
py_file_dir = os.path.join(basepath, py_dir)
if not os.path.exists(py_file_dir):
os.makedirs(py_file_dir)
else:
del_file(py_file_dir)
py_file_path = os.path.join(basepath, py_dir, py_name)
with open(py_file_path,"wb") as f:
f.write(resp.content)
f.close()
#解压文件
# 注意压缩格式选择
frzip = zipfile.ZipFile(py_file_path, 'r', zipfile.ZIP_DEFLATED)
# 将所有文件加压缩到指定目录
frzip.extractall(py_file_dir)
frzip.close()
newVersion = getLocaVersion()
logger.info(f'版本更新成功 , 当前版本:{newVersion}')
return True
else:
content = resp.content.decode('utf-8')
logger.info(content)
return False
#删除一个文件夹下的所有所有文件
def del_file(path):
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path, i)
#logger.info(f'删除文件:{c_path}')
if os.path.isdir(c_path):#如果是文件夹那么递归调用一下
del_file(c_path)
else: #如果是一个文件那么直接删除
os.remove(c_path)
if __name__=='__main__':
url = env('CCB_PY_SERVER')
# url='http://192.168.11.241:5000/ccb/api/updatePy'
if(url is None or len(url)==0):
logger.info('缺少环境变量 CCB_PY_SERVER, 请配置后重试!')
updateStatus = updateVersion(url)
if(updateStatus):
sys.path.append('ccb_py/')
module = importlib.import_module('ccb_ql_task')
module.main()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/maxinDev/ccb-boot.git
git@gitee.com:maxinDev/ccb-boot.git
maxinDev
ccb-boot
ccbBoot
master

搜索帮助