rambo 5 hónapja
szülő
commit
41d6fc9652
4 módosított fájl, 67 hozzáadás és 38 törlés
  1. 0 10
      python/api.py
  2. 22 10
      python/service/run_main.py
  3. 12 0
      python/settings.py
  4. 33 18
      python/sockets/message_handler.py

+ 0 - 10
python/api.py

@@ -28,16 +28,6 @@ import win32api, win32gui, win32con
 from win32gui import EnumWindows, GetWindowText
 from service.online_request.module_online_data import OnlineDataRequest
 
-def calculate_md5(filepath):
-    # 打开文件,以二进制只读模式打开
-    with open(filepath, "rb") as f:
-        # 创建MD5哈希对象
-        md5hash = hashlib.md5()
-        # 循环读取文件的内容并更新哈希对象
-        for chunk in iter(lambda: f.read(4096), b""):
-            md5hash.update(chunk)
-        # 返回MD5哈希的十六进制表示
-        return md5hash.hexdigest()
 
 
 @app.get("/")

+ 22 - 10
python/service/run_main.py

@@ -266,7 +266,19 @@ class RunMain:
                     )
             if "继续" in self.dialog_result:
                 do_next = True
-
+        goods_arts = [
+            goods_art_no_folder_data["folder_name"]
+            for goods_art_no_folder_data in all_goods_art_no_folder_data
+        ]
+        await sendSocketMessage(
+            code=0,
+            msg="开始处理抠图",
+            data={
+                "status": "进行中",
+                "goods_art_nos": goods_arts,
+            },
+            msg_type="segment_progress",
+        )
         if do_next:
             all_goods_art_no_folder_data = [
                 x for x in all_goods_art_no_folder_data if x["label"] == "待处理"
@@ -287,6 +299,15 @@ class RunMain:
             return new_func
         else:
             print("已结束抠图处理")
+            await sendSocketMessage(
+                code=0,
+                msg="抠图结束",
+                data={
+                    "status": "已完成",
+                    "goods_art_nos": goods_arts,
+                },
+                msg_type="segment_progress",
+            )
             return True
 
     async def do_run_cutout_image(
@@ -304,15 +325,6 @@ class RunMain:
             goods_art_no_folder_data["folder_name"]
             for goods_art_no_folder_data in all_goods_art_no_folder_data
         ]
-        await sendSocketMessage(
-            code=0,
-            msg="开始处理抠图",
-            data={
-                "status": "进行中",
-                "goods_art_nos": goods_arts,
-            },
-            msg_type="segment_progress",
-        )
         print("BaseDealImage().run_main========>>>>")
         deal = BaseDealImage(token=self.token)
         await deal.run_main(

+ 12 - 0
python/settings.py

@@ -327,3 +327,15 @@ async def sendSocketMessage(
         "msg_type": msg_type,
     }
     await message_queue.put(data)
+
+
+def calculate_md5(filepath):
+    # 打开文件,以二进制只读模式打开
+    with open(filepath, "rb") as f:
+        # 创建MD5哈希对象
+        md5hash = hashlib.md5()
+        # 循环读取文件的内容并更新哈希对象
+        for chunk in iter(lambda: f.read(4096), b""):
+            md5hash.update(chunk)
+        # 返回MD5哈希的十六进制表示
+        return md5hash.hexdigest()

+ 33 - 18
python/sockets/message_handler.py

@@ -15,6 +15,30 @@ from service.deal_image import DealImage
 import settings
 from middleware import UnicornException
 
+
+async def handlerCutOut(
+    manager=None, run_main=None, config_data={}, websocket=None, msg_type=""
+):
+    try:
+        return_data = run_main.check_before_cutout(config_data)
+        await run_main.check_for_cutout_image_first_call_back(return_data)
+    except UnicornException as e:
+        data = manager.jsonMessage(
+            code=1,
+            msg=e.msg,
+            msg_type=msg_type,
+        )
+        await manager.send_personal_message(data, websocket)
+        return
+    except Exception as e:
+        data = manager.jsonMessage(
+            code=1,
+            msg="抠图异常,请稍后重试~",
+            msg_type=msg_type,
+        )
+        await manager.send_personal_message(data, websocket)
+
+
 # socket消息发送逻辑处理方法
 async def handlerSend(
     manager: ConnectionManager,
@@ -440,25 +464,16 @@ async def handlerSend(
                 "target_error_folder": f"{limit_path}/软件-生成详情错误",
                 "success_handler": [],
             }
-            return_data = run_main.check_before_cutout(config_data)
-            loop = asyncio.get_event_loop()
-            try:
-                await run_main.check_for_cutout_image_first_call_back(return_data)
-            except UnicornException as e:
-                data = manager.jsonMessage(
-                    code=1,
-                    msg=e.msg,
-                    msg_type=msg_type,
-                )
-                await manager.send_personal_message(data, websocket)
-                return
-            except Exception as e:
-                data = manager.jsonMessage(
-                    code=1,
-                    msg="抠图异常,请稍后重试~",
+            loop.create_task(
+                handlerCutOut(
+                    manager=manager,
+                    run_main=run_main,
+                    config_data=config_data,
+                    websocket=websocket,
                     msg_type=msg_type,
-                )
-                await manager.send_personal_message(data, websocket)
+                ),
+                 name="handlerCutOut",
+            )
         case _:
             data = manager.jsonMessage(code=1, msg="未知消息")
             await manager.send_personal_message(data, websocket)