瀏覽代碼

split update_server_group_servers_attribute

xuekailun 4 月之前
父節點
當前提交
d0673ca207
共有 1 個文件被更改,包括 66 次插入108 次删除
  1. 66 108
      alb_utils.py

+ 66 - 108
alb_utils.py

@@ -408,65 +408,6 @@ def remove_servers_from_server_group(alb_client, server_group_id, instance_id, p
     except Exception as e:
         logging.error(f"Failed to remove server {instance_id} from server group {server_group_id}: {str(e)}")
 
-#
-# def set_weight_for_instances_alb(alb_client, server_group_id, instance_id_list, weights):
-#     """
-#     设置ALB服务器组中实例的权重
-#     :param alb_client: ALB客户端连接
-#     :param server_group_id: 服务器组ID
-#     :param instance_id_list: 实例ID列表
-#     :param weights: 权重列表
-#     :return: None
-#     """
-#     servers = []
-#     for instance_id, weight in zip(instance_id_list, weights):
-#         server = alb_models.AddServersToServerGroupRequestServers(   # todo update
-#             port=80,   # todo
-#             server_id=instance_id,
-#             server_type='ecs',
-#             weight=weight
-#         )
-#         servers.append(server)
-#
-#     request = alb_models.AddServersToServerGroupRequest(
-#         server_group_id=server_group_id,
-#         servers=servers
-#     )
-#
-#     runtime = util_models.RuntimeOptions()
-#     try:
-#         alb_client.add_servers_to_server_group_with_options(request, runtime)
-#         logging.info(f"Successfully set weights for instances in server group {server_group_id}.")
-#     except Exception as e:
-#         logging.error(f"Failed to set weights for instances: {str(e)}")
-#
-#
-# def set_instance_weight_process_with_alb(alb_client, server_group_id_list, instance_id_list, weight_list):
-#     """
-#     修改ALB服务器组中实例的权重值
-#     :param alb_client: ALB客户端连接
-#     :param server_group_id_list: 服务器组ID列表
-#     :param instance_id_list: 实例ID列表
-#     :param weight_list: 权重修改列表 type-list [(weight, sleep_time), ...]
-#     :return:
-#     """
-#     for weight, sleep_time in weight_list:
-#         logging.info(f"修改权重中: weight = {weight}")
-#         for server_group_id in server_group_id_list:
-#             flag = True
-#             while flag:
-#                 try:
-#                     # 使用新的权重设置函数
-#                     set_weight_for_instances_alb(alb_client, server_group_id, instance_id_list, [weight] * len(instance_id_list))
-#                     logging.info(f"服务器组: {server_group_id} 权重设置完成!")
-#                     flag = False
-#                 except Exception as e:
-#                     logging.error(f"更新权重失败: {e}, 将重试...")
-#                     time.sleep(10)
-#                     continue
-#         time.sleep(sleep_time)
-
-
 def list_server_group_servers(alb_client, server_group_id):
     """
     列出服务器组中的服务器并返回实例ID列表
@@ -482,15 +423,10 @@ def list_server_group_servers(alb_client, server_group_id):
     try:
         response = alb_client.list_server_group_servers_with_options(list_server_group_servers_request, runtime)
         instance_ids = [server.server_id for server in response.body.servers]
-        # if instance_ids:
-        #     return instance_ids[0]
-        # else:
-        #     return None
         return instance_ids
     except Exception as error:
-        print(error.message)
-        print(error.data.get("Recommend"))
-        UtilClient.assert_as_string(error.message)
+        print(str(error))
+        UtilClient.assert_as_string(str(error))
         return []
 
 
@@ -507,17 +443,42 @@ async def list_server_group_servers_async(alb_client, server_group_id):
     runtime = util_models.RuntimeOptions()
 
     try:
-        response = await alb_client.list_server_group_servers_with_options_async(list_server_group_servers_request,
-                                                                                 runtime)
+        response = await alb_client.list_server_group_servers_with_options_async(list_server_group_servers_request, runtime)
         instance_ids = [server.server_id for server in response.body.servers]
         return instance_ids
     except Exception as error:
-        print(error.message)
-        print(error.data.get("Recommend"))
-        UtilClient.assert_as_string(error.message)
+        print(str(error))
+        UtilClient.assert_as_string(str(error))
         return []
 
 
+def update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port):
+    """
+    更新特定服务器在服务器组中的权重
+    :param alb_client: ALB客户端
+    :param server_group_id: 服务器组ID
+    :param instance_id: 实例ID
+    :param weight: 权重值
+    :param port: 后端服务器使用的端口
+    """
+    server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
+        server_type='Ecs',
+        server_id=instance_id,
+        weight=weight,
+        port=port
+    )
+    request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
+        servers=[server],
+        server_group_id=server_group_id
+    )
+    runtime = util_models.RuntimeOptions()
+    try:
+        alb_client.update_server_group_servers_attribute_with_options(request, runtime)
+        print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight}.")
+    except Exception as error:
+        print(str(error))
+        UtilClient.assert_as_string(str(error))
+
 def update_server_group_servers_attribute(alb_client, server_group_id_list, instance_id_list, weight_list, port):
     """
     更新服务器组中的服务器权重
@@ -530,27 +491,39 @@ def update_server_group_servers_attribute(alb_client, server_group_id_list, inst
     for server_group_id in server_group_id_list:
         for instance_id in instance_id_list:
             for weight, sleep_time in weight_list:
-                server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
-                    server_type='Ecs',
-                    server_id=instance_id,
-                    weight=weight,
-                    port=port
-                )
-                request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
-                    servers=[server],
-                    server_group_id=server_group_id
-                )
-                runtime = util_models.RuntimeOptions()
-                try:
-                    alb_client.update_server_group_servers_attribute_with_options(request, runtime)
-                    print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight}.")
-                except Exception as error:
-                    print(error.message)
-                    print(error.data.get("Recommend"))
-                    UtilClient.assert_as_string(error.message)
+                update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port)
                 time.sleep(sleep_time)
 
 
+
+
+async def update_server_group_server_weight_async(alb_client, server_group_id, instance_id, weight, port):
+    """
+    异步更新特定服务器在服务器组中的权重
+    :param alb_client: ALB客户端
+    :param server_group_id: 服务器组ID
+    :param instance_id: 实例ID
+    :param weight: 权重值
+    :param port: 后端服务器使用的端口
+    """
+    server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
+        server_type='Ecs',
+        server_id=instance_id,
+        weight=weight,
+        port=port
+    )
+    request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
+        servers=[server],
+        server_group_id=server_group_id
+    )
+    runtime = util_models.RuntimeOptions()
+    try:
+        await alb_client.update_server_group_servers_attribute_with_options_async(request, runtime)
+        print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight} asynchronously.")
+    except Exception as error:
+        print(str(error))
+        UtilClient.assert_as_string(str(error))
+
 async def update_server_group_servers_attribute_async(alb_client, server_group_id_list, instance_ids, weight_list, port):
     """
     异步更新服务器组中的服务器属性
@@ -559,25 +532,10 @@ async def update_server_group_servers_attribute_async(alb_client, server_group_i
     :param instance_ids: 实例ID列表
     :param weight_list: 权重修改列表 type-list [(weight, sleep_time), ...]
     """
+    tasks = []
     for server_group_id in server_group_id_list:
         for instance_id in instance_ids:
             for weight, sleep_time in weight_list:
-                server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
-                    server_type='Ecs',
-                    server_id=instance_id,
-                    weight=weight,
-                    port=port
-                )
-                request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
-                    servers=[server],
-                    server_group_id=server_group_id
-                )
-                runtime = util_models.RuntimeOptions()
-                try:
-                    await alb_client.update_server_group_servers_attribute_with_options_async(request, runtime)
-                    print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight} asynchronously.")
-                except Exception as error:
-                    print(error.message)
-                    print(error.data.get("Recommend"))
-                    UtilClient.assert_as_string(error.message)
-                await asyncio.sleep(sleep_time)
+                tasks.append(update_server_group_server_weight_async(alb_client, server_group_id, instance_id, weight, port))
+                await asyncio.sleep(sleep_time)
+    await asyncio.gather(*tasks)