from .utils import miniIo as mio import zipfile,time import os from .utils.oss_redis import redisClient from .utils.logs import log from utils.config import cfg # 打印机旁边的电脑下载切片文件到本地 # 解压压缩包,将数据移动到指定的目录 # # # # 从 minio 服务上下载 zip 文件到指定目录和解压 def downloadZip(ossZipPath, localZipPath): # 下载 zip 文件 mio.download_file(ossZipPath, localZipPath) def unzip(localZipPath, localUnzipPath): # 解压 zip 文件 with zipfile.ZipFile(localZipPath, 'r') as zip_ref: zip_ref.extractall(localUnzipPath) # 解压完成后删除 zip 文件 os.remove(localZipPath) def getCurrentMachineId(): # 获取当前电脑的id machineId = cfg('machine.id', None) if machineId is None: log("获取当前电脑id失败") exit(0) return machineId def main(work_dir=None): # if work_dir is None: # log("工作目录不能为空") # exit(0) # redis 获取队列中的数据 r = redisClient() machineId = getCurrentMachineId() if machineId is None: log("获取当前电脑id失败") exit(0) downloadPath = cfg('machine.download_path', None) if downloadPath is None: log("数据存放路径失败没有设置") exit(0) while True: data = r.lpop('pb:begin_print_machine_'+machineId) if data is None: log("队列为空") time.sleep(10) continue data = data.decode('utf-8') # 判断是否是数字 if data.isdigit(): log("取出的数据是数字") time.sleep(10) continue # batchId = str(data) ossZipPath = f'slice/complate/{data}/data.snslc' localPath = os.path.join(downloadPath, f'data.snslc') # 判断目录是否存在,不存在就创建 if not os.path.exists(os.path.join(downloadPath)): os.makedirs(os.path.join(downloadPath)) else: # 删除目录下的所有文件 for file in os.listdir(os.path.join(downloadPath)): os.remove(os.path.join(downloadPath, file)) # 下载 zip 文件 downloadZip(ossZipPath, localPath) # # 解压 zip 文件 # localUnzipPath = os.path.join(work_dir,batchId) # unzip(localZipPath, localUnzipPath) # # 触发打印处理