rambo vor 4 Monaten
Ursprung
Commit
b9f1f59f67

+ 15 - 1
python/api.py

@@ -643,9 +643,21 @@ async def handle_detail(request: Request, params: HandlerDetail):
                                     result_goods_no_dict[goods_no_dict][
                                         "detail_path"
                                     ] = f"{detail_path_replace}/详情页.jpg"
-                        onlineData.uploadGoods2ThirdParty(
+                        await sendAsyncMessage(
+                            msg="开始上传商品数据",
+                            goods_arts=[],
+                            status="开始上传商品数据",
+                            msg_type="upload_goods_progress",
+                        )
+                        await onlineData.uploadGoods2ThirdParty(
                             result_goods_no_dict, online_stores=online_stores
                         )
+                        await sendAsyncMessage(
+                            msg="商品上传第三方成功",
+                            goods_arts=[],
+                            status="商品上传第三方成功",
+                            msg_type="upload_goods_progress",
+                        )
                     handler_result = config_data["success_handler"]
         else:
             handler_result.append(
@@ -654,7 +666,9 @@ async def handle_detail(request: Request, params: HandlerDetail):
     except UnicornException as e:
         handler_result_folder = ""
         handler_result = e.msg
+        print(f"UnicornException 生成错误信息:{e}")
     except Exception as e:
+        print(f"详情图生成错误信息:{e}")
         handler_result_folder = ""
         handler_result.append({"goods_art_no": "", "success": False, "info": str(e)})
     return {

+ 14 - 10
python/mcu/capture/smart_shooter_class.py

@@ -188,7 +188,7 @@ class SmartShooter(metaclass=SingletonType):
                 await self.websocket_manager.send_personal_message(
                     message, self.websocket
                 )
-            print("相机已连接状态信息---->", cameraInfo)
+            # print("相机已连接状态信息---->", cameraInfo)
             return True, "相机已连接"
         except zmq.Again:
             print("获取相机信息超时,继续监听...")
@@ -471,12 +471,18 @@ class SmartShooter(metaclass=SingletonType):
         if self.websocket.client_state.name != "CONNECTED":
             print("WebSocket连接已断开,停止发送消息")
             return
-        message = await asyncio.wait_for(message_queue.get(), timeout=0.1)
-        print("发送消息中。。。。。", message)
-        await self.websocket_manager.send_personal_message(
+        try:
+            # 使用非阻塞方式检查队列中是否有项目
+            if not message_queue.empty():
+                message = message_queue.get_nowait()
+                print("发送消息中。。。。。", message)
+                await self.websocket_manager.send_personal_message(
                     message, self.websocket
                 )
-        message_queue.task_done()
+                message_queue.task_done()
+        except Exception as e:
+            # 处理可能的异常,如队列为空等
+            pass
 
     def connect_listen(self):
         print("smart shooter connect_listen", self.connect_status, self.listen_init)
@@ -499,17 +505,15 @@ class SmartShooter(metaclass=SingletonType):
                 continue
             try:
                 # 创建任务并立即运行,设置超时以避免阻塞
-                future = asyncio.ensure_future(self.asyncMessageListen())
+                # future = asyncio.ensure_future(self.asyncMessageListen())
                 # 运行任务,但设置超时以避免无限等待
-                self.listen_loop.run_until_complete(
-                    asyncio.wait_for(future, timeout=0.5)
-                )
+                self.listen_loop.run_until_complete(self.asyncMessageListen())
             except asyncio.TimeoutError:
                 # 超时是正常的,表示没有消息需要处理
                 pass
             except Exception as e:
                 # 处理其他可能的异常
-                print(f"处理异步消息时出错: {e}")
+                print(f"Error handling async message-asyncMessageListen: {e}")
             # camera_states, camera_msg = await self.GetCameraInfo(is_send=False)
             # if not camera_states:
             #     print("相机未连接回调打印", camera_states, camera_msg)

+ 13 - 22
python/service/online_request/module_online_data.py

@@ -54,6 +54,7 @@ class AIGCDataRequest(object):
         resultData = self.s.post(
             url, files={"file": open(local_path, "rb")}, headers=post_headers
         ).json()
+        self.s.close()
         return resultData["data"]["url"]
 
     def center_paste_image(
@@ -134,6 +135,7 @@ class AIGCDataRequest(object):
             raise UnicornException("场景图生成失败")
         image_url = image_arr[0]
         save_image_path = download_image_with_pil(image_url, save_path)
+        self.s.close()
         return save_image_path
 
     def searchProgress(self, id):
@@ -142,6 +144,7 @@ class AIGCDataRequest(object):
         data = {"site": 1, "generate_ids": [id], "type": "aigc_pro"}
         resultData = self.s.post(url, json=data, headers=self.post_headers)
         resultData = resultData.json()
+        self.s.close()
         code = resultData.get("code", 0)
         message = resultData.get("message", "")
         if code != 0:
@@ -172,6 +175,7 @@ class AIGCDataRequest(object):
         """生成上脚图"""
         url = settings.DOMAIN + "/api/ai_image/main/upper_footer"
         resultData = self.s.post(url, data=data, headers=self.post_headers).json()
+        self.s.close()
         code = resultData.get("code", 0)
         message = resultData.get("message", "")
         if code != 0:
@@ -353,6 +357,7 @@ class OnlineDataRequest(object):
         resultData = self.s.post(
             url, files={"file": open(local_path, "rb")}, headers=post_headers
         ).json()
+        self.s.close()
         return resultData["data"]["url"]
 
     def get_current_menu(self):
@@ -506,10 +511,11 @@ class OnlineDataRequest(object):
         }
         url = settings.DOMAIN + "/api/ai_image/camera_machine/publish_goods"
         postData = json.dumps(params)
-        print("上传商品api==>url", url)
-        print("上传第三方数据打印", params)
+        # print("上传商品api==>url", url)
+        # print("上传第三方数据打印", params)
         resultData = self.s.post(url, data=postData, headers=post_headers).json()
-        print("上传商品api==>resultData", resultData)
+        self.s.close()
+        # print("上传商品api==>resultData", resultData)
         return resultData
 
     def sendSocketMessage(self, code=0, msg="", data=None, device_status=2,msg_type="upload_goods_progress"):
@@ -523,17 +529,12 @@ class OnlineDataRequest(object):
         loop = asyncio.get_event_loop()
         loop.create_task(message_queue.put(data))
 
-    def uploadGoods2ThirdParty(self, goods_no_dict=None, online_stores=[]):
+    async def uploadGoods2ThirdParty(self, goods_no_dict=None, online_stores=[]):
+        await asyncio.sleep(0.1)
         params = []
         message_type = "upload_goods_progress"
         if goods_no_dict == None:
             return
-        self.sendSocketMessage(
-            code=0,
-            msg="开始上传商品数据",
-            data={"goods_arts": list(goods_no_dict.keys()), "status": "进行中"},
-            msg_type=message_type,
-        )
         success_goods_arts = []
         for store in online_stores:
             for goods_no in goods_no_dict.keys():
@@ -548,12 +549,6 @@ class OnlineDataRequest(object):
                 if goods_price == '':
                     goods_price = 0
                 if goods_price == 0:
-                    self.sendSocketMessage(
-                        code=0,
-                        msg="上传商品异常",
-                        data={goods_arts: [goods_no], "status": "商品价格不存在"},
-                        msg_type=message_type,
-                    )
                     continue
                 skuList = []
                 itemImageInfoList = []
@@ -634,16 +629,12 @@ class OnlineDataRequest(object):
                 }
                 params.append(itemData)
         json_params = str(params)  # 直接转换为字符串表示
+        print("json_params", json_params)
         # 使用base64编码
         encoded = base64.b64encode(json_params.encode("utf-8")).decode("utf-8")
         self.upload_goods_api({"bizcontent": encoded, "online_stores": online_stores})
         print("商品上传第三方成功")
-        self.sendSocketMessage(
-            code=0,
-            msg="商品上传第三方成功",
-            data={"goods_arts": success_goods_arts, "status": "已完成"},
-            msg_type=message_type,
-        )
+        return True
 
 
 class GetOnlineDataHLM(OnlineDataRequest):

+ 1 - 1
python/sockets/socket_server.py

@@ -120,7 +120,7 @@ async def handler_messages(websocket):
                 )
             )
         except Exception as e:
-            print(e)
+            print("socket error",e)
             break