Browse Source

优化根据序列号查询各个服绑定状态接口

linhaohong 1 year ago
parent
commit
f510429a85
1 changed files with 44 additions and 32 deletions
  1. 44 32
      Controller/TestApi.py

+ 44 - 32
Controller/TestApi.py

@@ -2,6 +2,7 @@ import datetime
 import json
 import json
 import logging
 import logging
 import os
 import os
+import threading
 import time
 import time
 import traceback
 import traceback
 import urllib
 import urllib
@@ -970,39 +971,50 @@ class testView(View):
             serial_number = request_dict.get("serialNumber", None)
             serial_number = request_dict.get("serialNumber", None)
             if not serial_number:
             if not serial_number:
                 return response.json(0)
                 return response.json(0)
-            results_data = []
+
             if not CONFIG_INFO == "cn":
             if not CONFIG_INFO == "cn":
-                return response.json(0, results_data)
-            local_response = cls.getSerialNumberInfo(request_dict, response)
-            res = json.loads(local_response.content)
-            res["result"]["server"] = 1
-            res["result"]["serverName"] = "中国服"
-            res["result"]["domainName"] = "https://www.zositechc.cn"
-            results_data.append(res["result"])
-
-            res1 = requests.post("https://www.dvema.com/testApi/getSerialNumberInfo",
-                                 data={"serialNumber": serial_number}, timeout=15)
-            results1 = json.loads(res1.text)
-            results1["result"]["server"] = 2
-            results1["result"]["serverName"] = "美国服"
-            results1["result"]["domainName"] = "https://www.dvema.com"
-            results_data.append(results1["result"])
-
-            res2 = requests.post("http://api.zositeche.com/testApi/getSerialNumberInfo",
-                                 data={'serialNumber': serial_number}, timeout=15)
-            results2 = json.loads(res2.text)
-            results2['result']['server'] = 3
-            results2["result"]["serverName"] = "欧洲服"
-            results2["result"]["domainName"] = "https://api.zositeche.com"
-            results_data.append(results2['result'])
-
-            res3 = requests.post("https://test.zositechc.cn/testApi/getSerialNumberInfo",
-                                 data={'serialNumber': serial_number}, timeout=15)
-            results3 = json.loads(res3.text)
-            results3['result']['server'] = 4
-            results3["result"]["serverName"] = "测试服"
-            results3["result"]["domainName"] = "https://test.zositeche.cn"
-            results_data.append(results3['result'])
+                return response.json(0, [])
+
+            def fetch_data(url, data, server_info, results_data):
+                try:
+                    max_retries = 5
+                    res = ""
+                    for i in range(max_retries):
+                        res = requests.post(url, data=data, timeout=15)
+                        if res.status_code == 200:
+                            break
+                    result = json.loads(res.text)
+                    result['result'].update(server_info)
+                    results_data.append(result['result'])
+                except Exception as e:
+                    LOGGER.error(f"Error fetching data from {url}: {e}")
+
+            results_data = []
+            servers = [
+                ("https://www.zositechc.cn/testApi/getSerialNumberInfo", {"serialNumber": serial_number},
+                 {"server": 1, "serverName": "中国服", "domainName": "https://www.zositechc.cn"}),
+                ("https://www.dvema.com/testApi/getSerialNumberInfo", {"serialNumber": serial_number},
+                 {"server": 2, "serverName": "美国服", "domainName": "https://www.dvema.com"}),
+                ("http://www.zositeche.com/testApi/getSerialNumberInfo", {"serialNumber": serial_number},
+                 {"server": 3, "serverName": "欧洲服", "domainName": "http://www.zositeche.com"}),
+                ("https://test.zositechc.cn/testApi/getSerialNumberInfo", {"serialNumber": serial_number},
+                 {"server": 4, "serverName": "测试服", "domainName": "https://test.zositeche.cn"})
+            ]
+
+            threads = []
+            for url, data, server_info in servers:
+                thread = threading.Thread(target=fetch_data, args=(url, data, server_info, results_data))
+                threads.append(thread)
+                thread.start()
+
+            for thread in threads:
+                thread.join()
+
+            # 检查 results_data 中是否包含所有服务器的结果
+            server_ids = {1, 2, 3, 4}
+            fetched_server_ids = {item['server'] for item in results_data}
+            if not fetched_server_ids == server_ids:
+                return response.json(500, 'please try again')
 
 
             is_ok = True
             is_ok = True
             operation = ""
             operation = ""