建模程序 多个定时程序
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.
 
 

78 lines
2.7 KiB

import os,sys,time,shlex,subprocess,shutil,requests,json
import platform
if platform.system() == 'Windows':
sys.path.append('e:\\libs\\')
#sys.path.append('libs')
else:
sys.path.append('/data/deploy/make3d/make2/libs/')
import libs,config
def main(pid = 0):
print(f'开始时间-{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}')
if pid == 0:
#获取要处理PID的url
url = "https://repair.api.suwa3d.com/api/modelRepairOrder/getRepairOrderListByPriority"
#发起请求
res = requests.get(url)
print('res:', res.text)
if res.status_code != 200:
print('获取失败,程序退出')
return
res = json.loads(res.text)
pid = 0
try:
pid = res['data']['pid']
except Exception as e:
return 0
if pid == 0:
return 0
#调用oss下载功能,下载对应的文件
pathStr = os.path.join(config.workdir,str(pid)+"_ai")
libs.down_obj_from_oss_auto(str(pid),"auto",pathStr)
#检查是否存在产生的对应的文件
if not os.path.exists(os.path.join(pathStr,f'{pid}.obj')):
print(f"找不到{pid}obj文件")
return
if not os.path.exists(os.path.join(pathStr,f'{pid}.mtl')):
print(f"找不到{pid}mtl文件")
return
#下载完成后调用
os.system(f"python optimize_model.py -ip {pathStr}/{pid}.obj -op {pathStr}/{pid}_ai.obj")
#检查是否存在产生的对应的文件
if not os.path.exists(os.path.join(pathStr,f'{pid}_ai.obj')):
print(f"找不到{pid}ai_obj文件")
return
if not os.path.exists(os.path.join(pathStr,f'{pid}_ai.mtl')):
print(f"找不到{pid}ai_mtl文件")
return
#处理完成完后上传到oss指定目录
config.oss_bucket.put_object_from_file(f'objs/auto/{pid}/ai/fix_mesh/{pid}_ai.obj', os.path.join(pathStr,f'{pid}_ai.obj'))
config.oss_bucket.put_object_from_file(f'objs/auto/{pid}/ai/fix_mesh/{pid}_ai.mtl', os.path.join(pathStr,f'{pid}_ai.mtl'))
config.oss_bucket.put_object_from_file(f'objs/auto/{pid}/ai/fix_mesh/{pid}.jpg', os.path.join(pathStr,f'{pid}.jpg'))
#更新处理结果
url = "https://repair.api.suwa3d.com/api/modelRepairOrder/updateShootOrderBuildModelType?pid="+str(pid)
#发起请求
requests.get(url)
#移除文件夹
shutil.rmtree(pathStr)
print(f'结束时间-{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}')
if __name__ == '__main__':
if len(sys.argv) == 2:
pid = sys.argv[1]
main(pid)
print(f"{pid}-处理结束")
else:
while True:
res = main()
if res == 0:
print("休眠60s")
time.sleep(60)