Parcourir la source

优化异步批量绑定设备

linhaohong il y a 4 mois
Parent
commit
7be44abcfc
1 fichiers modifiés avec 10 ajouts et 3 suppressions
  1. 10 3
      AdminController/CloudServiceManage/AgentDeviceController.py

+ 10 - 3
AdminController/CloudServiceManage/AgentDeviceController.py

@@ -272,11 +272,18 @@ class AgentDeviceView(View):
             with open(file_path, 'r') as file:
                 reader = csv.DictReader(file)
                 devices_to_create = []
-                existing_serial_numbers = set(AgentDevice.objects.values_list('serial_number', flat=True))
+                # 先收集所有CSV中的序列号
+                csv_serial_numbers = [row.get('serial_number') for row in reader]
+                # 去重
+                unique_serial_numbers = set(csv_serial_numbers)
 
-                for row in reader:
+                existing = set(AgentDevice.objects.filter(
+                    serial_number__in=unique_serial_numbers
+                ).values_list('serial_number', flat=True))
+
+                for row in unique_serial_numbers:
                     serial_number = row.get('serial_number')
-                    if serial_number not in existing_serial_numbers:
+                    if serial_number not in existing:
                         device = AgentDevice(
                             ac_id=ac_id,
                             serial_number=serial_number,