import os import subprocess import redis import logging from typing import cast import requests from download_print import download_datas_by_pre_layout from download_print import BatchModelInfo from print_factory_type_setting_obj_run import print_type_setting_obj from config import print_factory_type_dir from general import is_run_local_data # 如果没有 DISPLAY,自动启动 Xvfb if "DISPLAY" not in os.environ: import atexit from time import sleep # 设置临时 XDG_RUNTIME_DIR runtime_dir = f"/tmp/runtime-{os.getuid()}" os.makedirs(runtime_dir, exist_ok=True) os.environ["XDG_RUNTIME_DIR"] = runtime_dir # 启动 Xvfb xvfb_cmd = ["Xvfb", ":99", "-screen", "0", "1024x768x24", "-nolisten", "tcp"] xvfb_proc = subprocess.Popen(xvfb_cmd) atexit.register(lambda: xvfb_proc.terminate()) # 退出时关闭 Xvfb # 设置 DISPLAY os.environ["DISPLAY"] = ":99" sleep(0.5) # 等待 Xvfb 启动 # redis_config = { # "host": "127.0.0.1", # "port": 6379, # "db": 6, # "password": "", # "kcV2000", # "socket_timeout": 10, # } redis_config = { "host": "mp.api.suwa3d.com", "port": 6379, "db": 6, "password": "kcV2000", # "kcV2000", "socket_timeout": 10, } import sys class RedisTaskQueue: """封装所有与 Redis 任务队列相关的操作。""" def __init__(self, queue_key: str, redis_config: dict = redis_config): self.queue_key = queue_key self.client = redis.Redis(**redis_config) def get_length(self) -> int: """ 获取队列的长度。如果连接丢失,会尝试重新连接一次。 """ try:# 检测queue_key是否存在 length = 0 self.client = redis.Redis(**redis_config) if not self.client.exists(self.queue_key): logging.warning(f"队列不存在: {self.queue_key}") return 0 key_type = self.client.type(self.queue_key).decode('utf-8') # type: ignore if key_type == 'list': length = cast(int, self.client.llen(self.queue_key)) elif key_type == 'set': length = cast(int, self.client.scard(self.queue_key)) return length except redis.ConnectionError as e: logging.warning(f"与 Redis 的连接中断: {e}。正在尝试重新连接...") return 0 except Exception as e: logging.warning(f"获取队列长度失败: {e}") return 0 def get_info(self) -> dict: """ 从指定的队列中取出一条信息 Returns: dict: 取出的信息,如果队列为空或出错则返回空字典 """ try: if not hasattr(self, 'client') or self.client is None: self.client = redis.Redis(**redis_config) if not self.client.exists(self.queue_key): logging.warning(f"队列不存在: {self.queue_key}") return {} key_type = self.client.type(self.queue_key).decode('utf-8') if key_type == 'list': # 从列表左侧弹出一个元素 data = self.client.lpop(self.queue_key) elif key_type == 'set': # 从集合中随机弹出一个元素 data = self.client.spop(self.queue_key) else: logging.warning(f"不支持的队列类型: {key_type}") return {} if data is None: return {} # print("data=", data) # 假设存储的是 JSON 格式的字符串 try: import json return json.loads(data.decode('utf-8')) except (json.JSONDecodeError, UnicodeDecodeError): # 如果不是 JSON,返回原始字符串作为值 return {"data": data.decode('utf-8')} except redis.ConnectionError as e: logging.warning(f"Redis 连接中断: {e}") return {} except Exception as e: logging.warning(f"获取队列信息失败: {e}") return {} def __len__(self) -> int: """让我们可以对实例使用 len() 函数,更符合 Python 风格。""" return self.get_length() import time import gc def main(): redis_queue_name = "pb:print_order_type_setting" # while True: try: redis_queue = RedisTaskQueue(redis_queue_name) task_num = redis_queue.get_length() # print("task_num=", task_num) if task_num <= 0: time.sleep(10) sys.exit(0) return info = redis_queue.get_info() print("info=", info) process_clound_print(info) gc.collect() except Exception as e: print(f"处理任务时出错: {e}") time.sleep(2.5) sys.exit(0) def test_main(): # data= {'machine_print_counts': 150, 'machine_type': 'big_machine', 'pre_batch_id': 9910032, 'print_machine_id': 14, 'print_orders': [{'counts': 1, 'layout_z': 35.62070959151145, 'model_weight': 41.862, 'order_id': 917900, 'pid': 376666, 'print_id': 126318}, {'counts': 1, 'layout_z': 31.380497732946978, 'model_weight': 35.158, 'order_id': 917810, 'pid': 376562, 'print_id': 126413}, {'counts': 1, 'layout_z': 26.136854969886777, 'model_weight': 21.403, 'order_id': 917820, 'pid': 376572, 'print_id': 126414}, {'counts': 1, 'layout_z': 37.967177899738104, 'model_weight': 30.48, 'order_id': 917922, 'pid': 376684, 'print_id': 126415}, {'counts': 1, 'layout_z': 20.368887098446734, 'model_weight': 13.097, 'order_id': 918228, 'pid': 377198, 'print_id': 126417}, {'counts': 1, 'layout_z': 21.4227336927951, 'model_weight': 15.859, 'order_id': 917576, 'pid': 376345, 'print_id': 126769}, {'counts': 1, 'layout_z': 27.539947066784066, 'model_weight': 25.185, 'order_id': 917811, 'pid': 376564, 'print_id': 126875}, {'counts': 1, 'layout_z': 31.692723822970393, 'model_weight': 32.796, 'order_id': 917821, 'pid': 376592, 'print_id': 126876}, {'counts': 1, 'layout_z': 20.20031720146163, 'model_weight': 8.664, 'order_id': 917822, 'pid': 376602, 'print_id': 126877}, {'counts': 1, 'layout_z': 22.41680629925537, 'model_weight': 15.206, 'order_id': 917827, 'pid': 376616, 'print_id': 126878}, {'counts': 1, 'layout_z': 25.443981671314514, 'model_weight': 11.965, 'order_id': 917879, 'pid': 376635, 'print_id': 126879}, {'counts': 1, 'layout_z': 31.09222672704002, 'model_weight': 20.318, 'order_id': 917902, 'pid': 376667, 'print_id': 126882}, {'counts': 1, 'layout_z': 30.3317820592175, 'model_weight': 32.964, 'order_id': 917903, 'pid': 376668, 'print_id': 126884}, {'counts': 1, 'layout_z': 28.69639626624317, 'model_weight': 27.751, 'order_id': 917904, 'pid': 376669, 'print_id': 126885}, {'counts': 1, 'layout_z': 28.043180029163203, 'model_weight': 19.866, 'order_id': 917917, 'pid': 376677, 'print_id': 126886}, {'counts': 1, 'layout_z': 28.58783468947201, 'model_weight': 25.505, 'order_id': 918196, 'pid': 377126, 'print_id': 126888}, {'counts': 1, 'layout_z': 43.55871899466554, 'model_weight': 63.512, 'order_id': 918201, 'pid': 377131, 'print_id': 126890}, {'counts': 1, 'layout_z': 32.52479624889478, 'model_weight': 22.943, 'order_id': 918203, 'pid': 377133, 'print_id': 126891}, {'counts': 1, 'layout_z': 33.21834123013511, 'model_weight': 42.163, 'order_id': 918206, 'pid': 377139, 'print_id': 126892}, {'counts': 1, 'layout_z': 27.81674335447885, 'model_weight': 15.455, 'order_id': 918207, 'pid': 377141, 'print_id': 126893}, {'counts': 1, 'layout_z': 29.78203639784899, 'model_weight': 29.696, 'order_id': 918231, 'pid': 377201, 'print_id': 126894}, {'counts': 1, 'layout_z': 23.66875736859606, 'model_weight': 13.39, 'order_id': 915637, 'pid': 373135, 'print_id': 126895}, {'counts': 1, 'layout_z': 29.00408914521088, 'model_weight': 19.553, 'order_id': 918246, 'pid': 377209, 'print_id': 126897}, {'counts': 1, 'layout_z': 24.44397251338635, 'model_weight': 15.424, 'order_id': 918325, 'pid': 376974, 'print_id': 126899}, {'counts': 1, 'layout_z': 31.755406379699707, 'model_weight': 31.131, 'order_id': 918492, 'pid': 377584, 'print_id': 126900}, {'counts': 1, 'layout_z': 38.03699946264237, 'model_weight': 47.412, 'order_id': 918493, 'pid': 377587, 'print_id': 126901}, {'counts': 1, 'layout_z': 43.52919799223749, 'model_weight': 37.842, 'order_id': 918494, 'pid': 377589, 'print_id': 126902}, {'counts': 1, 'layout_z': 25.906302369108843, 'model_weight': 18.64, 'order_id': 918495, 'pid': 377590, 'print_id': 126903}, {'counts': 1, 'layout_z': 36.02611978829816, 'model_weight': 43.814, 'order_id': 918496, 'pid': 377591, 'print_id': 126904}, {'counts': 1, 'layout_z': 26.020689766262052, 'model_weight': 18.513, 'order_id': 918497, 'pid': 377594, 'print_id': 126905}, {'counts': 1, 'layout_z': 23.988078117370605, 'model_weight': 15.753, 'order_id': 918498, 'pid': 377596, 'print_id': 126906}, {'counts': 1, 'layout_z': 27.457814063914604, 'model_weight': 23.507, 'order_id': 918500, 'pid': 377601, 'print_id': 126908}, {'counts': 1, 'layout_z': 29.306090320672993, 'model_weight': 25.043, 'order_id': 918501, 'pid': 377605, 'print_id': 126909}, {'counts': 1, 'layout_z': 29.070231478924583, 'model_weight': 25.598, 'order_id': 918504, 'pid': 377606, 'print_id': 126910}, {'counts': 1, 'layout_z': 24.314504768436095, 'model_weight': 18.68, 'order_id': 918555, 'pid': 377684, 'print_id': 126911}, {'counts': 1, 'layout_z': 37.52979171030315, 'model_weight': 53.541, 'order_id': 918558, 'pid': 377689, 'print_id': 126913}, {'counts': 1, 'layout_z': 26.530791960490333, 'model_weight': 15.082, 'order_id': 918560, 'pid': 377702, 'print_id': 126915}, {'counts': 1, 'layout_z': 23.604568481445312, 'model_weight': 21.614, 'order_id': 918583, 'pid': 377748, 'print_id': 126917}, {'counts': 1, 'layout_z': 27.865868478825355, 'model_weight': 22.6, 'order_id': 918636, 'pid': 377819, 'print_id': 126919}, {'counts': 1, 'layout_z': 30.786012113461286, 'model_weight': 25.699, 'order_id': 919105, 'pid': 378621, 'print_id': 126926}, {'counts': 1, 'layout_z': 27.39871813917613, 'model_weight': 20.061, 'order_id': 919106, 'pid': 378638, 'print_id': 126927}, {'counts': 1, 'layout_z': 37.645312213517265, 'model_weight': 42.591, 'order_id': 919018, 'pid': 377979, 'print_id': 126929}, {'counts': 1, 'layout_z': 53.26858516168712, 'model_weight': 130.558, 'order_id': 919110, 'pid': 378650, 'print_id': 126930}, {'counts': 1, 'layout_z': 27.335996763557635, 'model_weight': 19.724, 'order_id': 919024, 'pid': 378409, 'print_id': 126935}, {'counts': 1, 'layout_z': 23.94061705626402, 'model_weight': 15.026, 'order_id': 917479, 'pid': 376087, 'print_id': 126940}, {'counts': 1, 'layout_z': 29.543430158218627, 'model_weight': 19.191, 'order_id': 919012, 'pid': 378375, 'print_id': 126943}, {'counts': 1, 'layout_z': 27.454958866692724, 'model_weight': 22.776, 'order_id': 918499, 'pid': 377599, 'print_id': 126946}, {'counts': 1, 'layout_z': 29.367137022488468, 'model_weight': 22.455, 'order_id': 918559, 'pid': 377700, 'print_id': 126947}, {'counts': 1, 'layout_z': 29.209802512215997, 'model_weight': 22.524, 'order_id': 918569, 'pid': 377740, 'print_id': 126948}, {'counts': 1, 'layout_z': 25.396360323579223, 'model_weight': 20.442, 'order_id': 919228, 'pid': 378700, 'print_id': 126949}, {'counts': 1, 'layout_z': 28.232575120695085, 'model_weight': 24.391, 'order_id': 919229, 'pid': 378701, 'print_id': 126950}, {'counts': 1, 'layout_z': 31.82000351720909, 'model_weight': 35.189, 'order_id': 918580, 'pid': 377743, 'print_id': 126951}, {'counts': 1, 'layout_z': 18.000296592712402, 'model_weight': 5.264, 'order_id': 919230, 'pid': 378702, 'print_id': 126952}, {'counts': 1, 'layout_z': 32.6660716900792, 'model_weight': 21.182, 'order_id': 918581, 'pid': 377744, 'print_id': 126953}, {'counts': 1, 'layout_z': 20.317776580664418, 'model_weight': 6.793, 'order_id': 919231, 'pid': 378703, 'print_id': 126954}, {'counts': 1, 'layout_z': 23.08764836740975, 'model_weight': 12.265, 'order_id': 918582, 'pid': 377745, 'print_id': 126955}, {'counts': 1, 'layout_z': 22.843233481777308, 'model_weight': 12.229, 'order_id': 918783, 'pid': 378073, 'print_id': 126956}, {'counts': 1, 'layout_z': 17.441239242068544, 'model_weight': 4.888, 'order_id': 919233, 'pid': 378705, 'print_id': 126957}, {'counts': 1, 'layout_z': 18.11011046132721, 'model_weight': 5.835, 'order_id': 919234, 'pid': 378706, 'print_id': 126958}, {'counts': 1, 'layout_z': 16.299313366344762, 'model_weight': 4.977, 'order_id': 919232, 'pid': 378704, 'print_id': 126959}, {'counts': 1, 'layout_z': 16.977858537144982, 'model_weight': 4.423, 'order_id': 919235, 'pid': 378707, 'print_id': 126960}, {'counts': 1, 'layout_z': 19.66670311054518, 'model_weight': 6.836, 'order_id': 919236, 'pid': 378708, 'print_id': 126962}, {'counts': 1, 'layout_z': 16.450413533497088, 'model_weight': 4.404, 'order_id': 919237, 'pid': 378709, 'print_id': 126963}, {'counts': 1, 'layout_z': 19.12714231472859, 'model_weight': 6.788, 'order_id': 919238, 'pid': 378711, 'print_id': 126965}, {'counts': 1, 'layout_z': 15.662716096748905, 'model_weight': 5.399, 'order_id': 919239, 'pid': 378712, 'print_id': 126966}, {'counts': 1, 'layout_z': 17.984565068326873, 'model_weight': 5.224, 'order_id': 919240, 'pid': 378713, 'print_id': 126968}, {'counts': 1, 'layout_z': 18.779169416653758, 'model_weight': 6.097, 'order_id': 919243, 'pid': 378715, 'print_id': 126971}, {'counts': 1, 'layout_z': 17.88619578087645, 'model_weight': 6.155, 'order_id': 919244, 'pid': 378716, 'print_id': 126972}, {'counts': 1, 'layout_z': 18.061075125597053, 'model_weight': 6.012, 'order_id': 919245, 'pid': 378717, 'print_id': 126973}, {'counts': 1, 'layout_z': 18.02680370824573, 'model_weight': 5.248, 'order_id': 919246, 'pid': 378718, 'print_id': 126974}, {'counts': 1, 'layout_z': 18.23313922758454, 'model_weight': 4.889, 'order_id': 919247, 'pid': 378719, 'print_id': 126975}, {'counts': 1, 'layout_z': 15.10249208974721, 'model_weight': 4.305, 'order_id': 919248, 'pid': 378720, 'print_id': 126976}, {'counts': 1, 'layout_z': 26.393060472696845, 'model_weight': 18.787, 'order_id': 919249, 'pid': 378721, 'print_id': 126978}, {'counts': 1, 'layout_z': 30.27226940032898, 'model_weight': 20.279, 'order_id': 919250, 'pid': 378722, 'print_id': 126979}, {'counts': 1, 'layout_z': 33.275894165039055, 'model_weight': 30.53, 'order_id': 919026, 'pid': 378415, 'print_id': 126980}, {'counts': 1, 'layout_z': 19.061190510799264, 'model_weight': 7.443, 'order_id': 919251, 'pid': 378723, 'print_id': 126981}, {'counts': 1, 'layout_z': 22.21409211773961, 'model_weight': 7.147, 'order_id': 919252, 'pid': 378724, 'print_id': 126982}, {'counts': 1, 'layout_z': 31.450466048829572, 'model_weight': 30.067, 'order_id': 919030, 'pid': 378420, 'print_id': 126983}, {'counts': 1, 'layout_z': 16.95446233116205, 'model_weight': 5.067, 'order_id': 919253, 'pid': 378725, 'print_id': 126984}, {'counts': 1, 'layout_z': 26.16507487130793, 'model_weight': 18.558, 'order_id': 919031, 'pid': 378425, 'print_id': 126985}, {'counts': 1, 'layout_z': 16.012466453733403, 'model_weight': 6.216, 'order_id': 919255, 'pid': 378727, 'print_id': 126987}, {'counts': 1, 'layout_z': 20.30786979564451, 'model_weight': 7.149, 'order_id': 919256, 'pid': 378728, 'print_id': 126989}, {'counts': 1, 'layout_z': 21.65708123870792, 'model_weight': 8.508, 'order_id': 919257, 'pid': 378729, 'print_id': 126990}, {'counts': 1, 'layout_z': 17.955288402689746, 'model_weight': 6.014, 'order_id': 919258, 'pid': 378730, 'print_id': 126991}, {'counts': 1, 'layout_z': 19.3577859181912, 'model_weight': 7.269, 'order_id': 919259, 'pid': 378731, 'print_id': 126992}, {'counts': 1, 'layout_z': 16.81846154205583, 'model_weight': 4.525, 'order_id': 919260, 'pid': 378732, 'print_id': 126993}, {'counts': 1, 'layout_z': 27.407528874290133, 'model_weight': 20.443, 'order_id': 919261, 'pid': 378733, 'print_id': 126994}, {'counts': 1, 'layout_z': 34.374910104166425, 'model_weight': 24.786, 'order_id': 919263, 'pid': 378737, 'print_id': 126995}, {'counts': 1, 'layout_z': 22.392321514992663, 'model_weight': 13.752, 'order_id': 919264, 'pid': 378738, 'print_id': 126996}, {'counts': 1, 'layout_z': 18.011880302127423, 'model_weight': 5.473, 'order_id': 919265, 'pid': 378739, 'print_id': 126997}, {'counts': 1, 'layout_z': 28.383317524486593, 'model_weight': 21.997, 'order_id': 919266, 'pid': 378743, 'print_id': 126998}, {'counts': 1, 'layout_z': 23.672918816217553, 'model_weight': 16.46, 'order_id': 917480, 'pid': 376067, 'print_id': 126999}, {'counts': 1, 'layout_z': 16.479959151650828, 'model_weight': 5.821, 'order_id': 919267, 'pid': 378744, 'print_id': 127000}, {'counts': 1, 'layout_z': 35.155273295967994, 'model_weight': 48.551, 'order_id': 919268, 'pid': 378745, 'print_id': 127001}, {'counts': 1, 'layout_z': 25.231643428560584, 'model_weight': 19.358, 'order_id': 917478, 'pid': 376098, 'print_id': 127002}, {'counts': 1, 'layout_z': 16.688496289759275, 'model_weight': 5.743, 'order_id': 919269, 'pid': 378746, 'print_id': 127003}, {'counts': 1, 'layout_z': 27.167236561321484, 'model_weight': 21.521, 'order_id': 919270, 'pid': 378747, 'print_id': 127004}, {'counts': 1, 'layout_z': 25.463308095650035, 'model_weight': 10.912, 'order_id': 919271, 'pid': 378748, 'print_id': 127005}, {'counts': 1, 'layout_z': 25.206470863711544, 'model_weight': 10.581, 'order_id': 919272, 'pid': 378749, 'print_id': 127007}, {'counts': 1, 'layout_z': 26.25579441073758, 'model_weight': 13.336, 'order_id': 919273, 'pid': 378750, 'print_id': 127008}, {'counts': 1, 'layout_z': 22.231088289345216, 'model_weight': 12.438, 'order_id': 919014, 'pid': 378382, 'print_id': 127009}, {'counts': 1, 'layout_z': 26.20472244790368, 'model_weight': 14.247, 'order_id': 919274, 'pid': 378751, 'print_id': 127010}, {'counts': 1, 'layout_z': 25.164680222473894, 'model_weight': 15.369, 'order_id': 918502, 'pid': 377099, 'print_id': 127015}, {'counts': 1, 'layout_z': 24.15820278087022, 'model_weight': 16.648, 'order_id': 919219, 'pid': 378697, 'print_id': 127017}, {'counts': 1, 'layout_z': 16.35217992064665, 'model_weight': 5.306, 'order_id': 919182, 'pid': 378518, 'print_id': 127018}, {'counts': 1, 'layout_z': 21.25218355838687, 'model_weight': 10.043, 'order_id': 918230, 'pid': 377200, 'print_id': 127019}, {'counts': 1, 'layout_z': 33.729734231090276, 'model_weight': 49.911, 'order_id': 919276, 'pid': 378776, 'print_id': 127020}, {'counts': 1, 'layout_z': 24.560107711202825, 'model_weight': 8.349, 'order_id': 919282, 'pid': 378798, 'print_id': 127027}, {'counts': 1, 'layout_z': 21.12561534577449, 'model_weight': 7.557, 'order_id': 919287, 'pid': 378803, 'print_id': 127031}, {'counts': 1, 'layout_z': 25.091119425246845, 'model_weight': 14.908, 'order_id': 919292, 'pid': 378808, 'print_id': 127037}, {'counts': 1, 'layout_z': 26.77140074489941, 'model_weight': 21.134, 'order_id': 919293, 'pid': 378809, 'print_id': 127038}, {'counts': 1, 'layout_z': 27.517811122519632, 'model_weight': 20.529, 'order_id': 919294, 'pid': 378810, 'print_id': 127040}, {'counts': 1, 'layout_z': 30.62898230748005, 'model_weight': 22.053, 'order_id': 918507, 'pid': 377607, 'print_id': 127041}, {'counts': 1, 'layout_z': 27.056545744705435, 'model_weight': 20.734, 'order_id': 919295, 'pid': 378811, 'print_id': 127042}, {'counts': 1, 'layout_z': 23.059078062109105, 'model_weight': 13.642, 'order_id': 918508, 'pid': 377610, 'print_id': 127044}, {'counts': 1, 'layout_z': 24.373135283888665, 'model_weight': 18.763, 'order_id': 919297, 'pid': 378814, 'print_id': 127045}, {'counts': 1, 'layout_z': 29.93312254092476, 'model_weight': 28.184, 'order_id': 918556, 'pid': 377685, 'print_id': 127046}, {'counts': 1, 'layout_z': 35.433726822945225, 'model_weight': 46.28, 'order_id': 919298, 'pid': 378815, 'print_id': 127047}, {'counts': 1, 'layout_z': 32.148966009725754, 'model_weight': 43.827, 'order_id': 919299, 'pid': 378816, 'print_id': 127048}, {'counts': 1, 'layout_z': 24.873977270254855, 'model_weight': 17.694, 'order_id': 919300, 'pid': 378817, 'print_id': 127049}, {'counts': 1, 'layout_z': 28.89906702733768, 'model_weight': 19.09, 'order_id': 918568, 'pid': 377739, 'print_id': 127050}, {'counts': 1, 'layout_z': 29.072691539058013, 'model_weight': 24.701, 'order_id': 919301, 'pid': 378818, 'print_id': 127051}, {'counts': 1, 'layout_z': 22.799459457397457, 'model_weight': 17.986, 'order_id': 919302, 'pid': 378819, 'print_id': 127052}, {'counts': 1, 'layout_z': 28.30774288615256, 'model_weight': 23.62, 'order_id': 919303, 'pid': 378820, 'print_id': 127054}, {'counts': 1, 'layout_z': 27.685387987537027, 'model_weight': 18.804, 'order_id': 919304, 'pid': 378821, 'print_id': 127055}, {'counts': 1, 'layout_z': 21.501308067252822, 'model_weight': 7.512, 'order_id': 919305, 'pid': 378822, 'print_id': 127056}, {'counts': 1, 'layout_z': 31.91424955213119, 'model_weight': 37.428, 'order_id': 919307, 'pid': 378823, 'print_id': 127057}, {'counts': 1, 'layout_z': 32.039728096944266, 'model_weight': 35.473, 'order_id': 919308, 'pid': 378824, 'print_id': 127058}, {'counts': 1, 'layout_z': 33.27248765777313, 'model_weight': 37.264, 'order_id': 919309, 'pid': 378825, 'print_id': 127059}, {'counts': 1, 'layout_z': 31.01150813726163, 'model_weight': 27.421, 'order_id': 919310, 'pid': 378826, 'print_id': 127060}, {'counts': 1, 'layout_z': 25.02092682146464, 'model_weight': 16.694, 'order_id': 919311, 'pid': 378827, 'print_id': 127061}, {'counts': 1, 'layout_z': 27.649195956325578, 'model_weight': 20.131, 'order_id': 919314, 'pid': 378831, 'print_id': 127062}, {'counts': 1, 'layout_z': 29.323484806820524, 'model_weight': 23.913, 'order_id': 919313, 'pid': 378830, 'print_id': 127063}, {'counts': 1, 'layout_z': 29.93491564175814, 'model_weight': 27.02, 'order_id': 919312, 'pid': 378829, 'print_id': 127064}, {'counts': 1, 'layout_z': 29.220408560439278, 'model_weight': 25.891, 'order_id': 919316, 'pid': 378834, 'print_id': 127066}, {'counts': 1, 'layout_z': 27.086421547538176, 'model_weight': 21.186, 'order_id': 919317, 'pid': 378835, 'print_id': 127067}, {'counts': 1, 'layout_z': 29.687568424918922, 'model_weight': 22.681, 'order_id': 919318, 'pid': 378836, 'print_id': 127068}, {'counts': 1, 'layout_z': 30.30524230403575, 'model_weight': 26.048, 'order_id': 919319, 'pid': 378837, 'print_id': 127069}, {'counts': 1, 'layout_z': 24.082729373309707, 'model_weight': 18.03, 'order_id': 919322, 'pid': 378840, 'print_id': 127072}, {'counts': 1, 'layout_z': 27.8159610614131, 'model_weight': 21.29, 'order_id': 919321, 'pid': 378839, 'print_id': 127073}, {'counts': 1, 'layout_z': 28.93995122935326, 'model_weight': 21.318, 'order_id': 919326, 'pid': 378844, 'print_id': 127074}, {'counts': 1, 'layout_z': 27.58645357098898, 'model_weight': 23.726, 'order_id': 919324, 'pid': 378842, 'print_id': 127076}, {'counts': 1, 'layout_z': 26.337441702233544, 'model_weight': 23.781, 'order_id': 919329, 'pid': 378847, 'print_id': 127077}, {'counts': 1, 'layout_z': 25.032097288221692, 'model_weight': 17.614, 'order_id': 919328, 'pid': 378846, 'print_id': 127078}, {'counts': 1, 'layout_z': 27.0008910375328, 'model_weight': 20.06, 'order_id': 919327, 'pid': 378845, 'print_id': 127079}, {'counts': 1, 'layout_z': 28.573475817385898, 'model_weight': 22.823, 'order_id': 919334, 'pid': 378852, 'print_id': 127081}, {'counts': 1, 'layout_z': 23.589348437207477, 'model_weight': 19.486, 'order_id': 919335, 'pid': 378853, 'print_id': 127082}, {'counts': 1, 'layout_z': 28.29603645275283, 'model_weight': 20.464, 'order_id': 919330, 'pid': 378848, 'print_id': 127083}, {'counts': 1, 'layout_z': 36.094532611977854, 'model_weight': 19.122, 'order_id': 919333, 'pid': 378851, 'print_id': 127084}, {'counts': 1, 'layout_z': 26.209464742348054, 'model_weight': 20.434, 'order_id': 919331, 'pid': 378849, 'print_id': 127085}]} data= {"machine_print_counts":50, 'machine_type': 'small_machine',"pre_batch_id":991112,"print_machine_id":22,"print_orders":[{"counts":1,"layout_z":3.543965775898459,"model_weight":12.833,"order_id":857420,"pid":268473,"print_id":85240},{"counts":1,"layout_z":7.798861189952786,"model_weight":13.784,"order_id":875986,"pid":305425,"print_id":88136}]} process_clound_print(data) gc.collect() time.sleep(5) sys.exit(0) import os def clear_directory_recursive(dir_path): """ 递归清空目录:保留原目录,递归删除其所有内容和子内容。 """ if not os.path.isdir(dir_path): print(f"路径 {dir_path} 不是一个有效目录。") return for item_name in os.listdir(dir_path): item_path = os.path.join(dir_path, item_name) if os.path.isfile(item_path) or os.path.islink(item_path): # 如果是文件或符号链接,直接删除 try: os.unlink(item_path) print(f"已删除: {item_path}") except Exception as e: print(f"删除失败 {item_path}: {e}") elif os.path.isdir(item_path): # 如果是子目录,递归调用函数清空它,然后删除这个空目录 try: clear_directory_recursive(item_path) # 递归清空子目录 os.rmdir(item_path) # 删除现已为空的子目录 print(f"已删除子目录: {item_path}") except Exception as e: print(f"删除子目录失败 {item_path}: {e}") print(f"目录 {dir_path} 下的内容已清空。") def process_clound_print(data): print_ids = [] list_print_model_info = [] selected_machine = "大机型" try: import json # parsed = json.loads(data.decode('utf-8')) parsed = data pre_batch_id = parsed["pre_batch_id"] print(f"pre_batch_id={pre_batch_id}") machine_print_counts = parsed["machine_print_counts"] machine_type = parsed["machine_type"] if machine_type == "small_machine" : selected_machine = "小机型" else : selected_machine = "大机型" print_orders = parsed.get("print_orders", []) if not print_orders: print("没有找到订单数据") results = [] for index, order in enumerate(print_orders, 1): order_info = { 'index': index, 'counts': order.get('counts'), 'pid': order.get('pid'), 'print_id': order.get('print_id'), 'order_id': order.get('order_id'), 'layout_z': order.get('layout_z') } results.append(order_info) """ # 打印订单信息 print(f"订单 #{index}:") print(f" counts: {order_info['counts']}") print(f" PID: {order_info['pid']}") print(f" print_id: {order_info['print_id']}") print(f" 布局Z: {order_info['layout_z']}") """ print_ids.append(order_info['print_id']) # list_print_model_info.append(batch_model_info) # print("-" * 40) except (json.JSONDecodeError, UnicodeDecodeError): # 如果不是 JSON,返回原始字符串作为值 print("error!") print(f"print_ids={print_ids}") # print_ids2 = [115988, 118411] # api_addr_pre = "https://mp.api.suwa3d.com" # test = True # if test: # api_addr_pre = "http://127.0.0.1:8199" # url = f"{api_addr_pre}/api/printOrder/getInfoByPrintIds?print_ids={print_ids}" url = f"https://mp.api.suwa3d.com/api/printOrder/getInfoByPrintIds?print_ids={print_ids}" res = requests.get(url) data = res.json()["data"] for index, order in enumerate(data, 1): order_info = { 'order_id': order.get('order_id'), 'pid': order.get('pid'), 'print_order_id': order.get('print_order_id'), 'real_size': order.get('real_size'), 'path': order.get('path'), 'quantity': order.get('quantity') } results.append(order_info) model_size = f"{order_info['real_size']}_x{order_info['quantity']}" # 打印订单信息 # print(f"订单 #{order_info['order_id']}:") # print(f" PID: {order_info['pid']}") # print(f" print_order_id: {order_info['print_order_id']}") # print(f" model_size: {model_size}") # print(f" quantity: {order_info['quantity']}") # print(f" path: {order_info['path']}") batch_model_info = BatchModelInfo( order_id=order_info["order_id"], pid=order_info["pid"], print_order_id=order_info["print_order_id"], model_size=model_size, path=order_info["path"], count= order_info["quantity"] if order_info["quantity"] > 1 else 1 ) list_print_model_info.append(batch_model_info) print("-" * 40) workdir = f"{print_factory_type_dir}/data/{pre_batch_id}" oss_config = f"{print_factory_type_dir}/print_factory_type_setting_big/download_print/run.yaml" clear_directory_recursive(f"{print_factory_type_dir}/data/") clear_directory_recursive(f"{print_factory_type_dir}/full/") start_time = time.time() if not download_datas_by_pre_layout(list_print_model_info, workdir, oss_config): print(f"下载失败,排版终止 批次={pre_batch_id}") return print(f"下载耗时:{time.time()-start_time}") # 下载结束 # 排版开始 src_dir = pre_batch_id selected_mode="紧凑" # 标准 紧凑 output_format="JSON" # 模型 JSON base_original_obj_dir = f"{print_factory_type_dir}/data/{src_dir}" print_type_setting_obj(base_original_obj_dir=base_original_obj_dir,batch_id=pre_batch_id, selected_mode=selected_mode,output_format=output_format,selected_machine=selected_machine) #排版结束 if __name__ == '__main__': print(f"is_run_local_data={is_run_local_data()}") if is_run_local_data(): test_main() else: print(f"run main") main()