|
@@ -12,6 +12,7 @@
|
|
@Contact: chanjunkai@163.com
|
|
@Contact: chanjunkai@163.com
|
|
"""
|
|
"""
|
|
import os
|
|
import os
|
|
|
|
+import threading
|
|
import traceback
|
|
import traceback
|
|
|
|
|
|
import botocore
|
|
import botocore
|
|
@@ -985,39 +986,53 @@ 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"])
|
|
|
|
|
|
+ return response.json(0, [])
|
|
|
|
|
|
- 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"])
|
|
|
|
|
|
+ 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://api.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.zositechc.cn"})
|
|
|
|
+ ]
|
|
|
|
|
|
- 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'])
|
|
|
|
|
|
+ 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()
|
|
|
|
|
|
- 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'])
|
|
|
|
|
|
+ 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')
|
|
|
|
+
|
|
|
|
+ # 排序
|
|
|
|
+ results_data = sorted(results_data, key=lambda x: x["server"])
|
|
|
|
|
|
is_ok = True
|
|
is_ok = True
|
|
operation = ""
|
|
operation = ""
|
|
@@ -1045,8 +1060,7 @@ class testView(View):
|
|
LogModel.objects.create(**log)
|
|
LogModel.objects.create(**log)
|
|
return response.json(0, results_data)
|
|
return response.json(0, results_data)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
- LOGGER.info("异常详情,errLine:{}, errMsg:{}".format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
- return response.json(500)
|
|
|
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
def checkOrderExist(request_dict, response):
|
|
def checkOrderExist(request_dict, response):
|