xuekailun преди 4 месеца
родител
ревизия
cd8900911b
променени са 1 файла, в които са добавени 29 реда и са изтрити 20 реда
  1. 29 20
      longvideoapi/utils.py

+ 29 - 20
longvideoapi/utils.py

@@ -24,7 +24,7 @@ from alibabacloud_tea_openapi import models as open_api_models
 from alibabacloud_alb20200616 import models as alb_models
 from alibabacloud_alb20200616 import models as alb_20200616_models
 from alibabacloud_tea_util import models as util_models
-
+from urllib3 import request
 
 logging.basicConfig(level=logging.INFO,
                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
@@ -446,27 +446,34 @@ def list_server_group_servers(alb_client, server_group_id):
         return []
 
 
-async def list_server_group_servers_async(alb_client, server_group_id):
-    """
-    异步列出指定服务器组中的服务器并返回实例ID列表
-    @param alb_client: ALB客户端
-    @param server_group_id: 服务器组ID
-    @return: 实例ID列表
-    """
-    list_server_group_servers_request = alb_20200616_models.ListServerGroupServersRequest(
-        server_group_id=server_group_id,
+def list_server_groups(alb_client, server_group_id):
+    list_server_groups_request = alb_20200616_models.ListServerGroupsRequest(
+        server_group_ids=server_group_id,
         max_results=100
     )
     runtime = util_models.RuntimeOptions()
-
     try:
-        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(str(error))
-        UtilClient.assert_as_string(str(error))
-        return []
+        retries = 3
+        while retries > 0:
+            response = alb_client.list_server_groups_with_options(list_server_groups_request, runtime)
+            server_groups = response.ServerGroups
+            for server_group in server_groups:
+                server_group_status = server_group.get("ServerGroupStatus")
+                if server_group_status == "Available":
+                    logging.info(f"Server group {server_group_id} is available.")
+                    return server_group_status
+                else:
+                    logging.warning(
+                        f"Server group {server_group_id} is not available. Current status: {server_group_status}.")
+                    logging.info("Sleeping for 3 seconds...")
+                    time.sleep(3)
+                    retries -= 1
+                    if retries == 0:
+                        logging.error(f"Server group {server_group_id} is not available after 3 attempts. Exiting.")
+                        sys.exit()
+    except Exception as e:
+        logging.error(e)
+        sys.exit()
 
 
 def update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port):
@@ -496,7 +503,10 @@ def update_server_group_server_weight(alb_client, server_group_id_list, instance
         runtime = util_models.RuntimeOptions()
         try:
             logging.info(f"instance_id_list = {instance_id_list} request = {request}")
-            alb_client.update_server_group_servers_attribute_with_options(request, runtime)
+            server_group_status = list_server_groups(alb_client, server_group_id)
+            if server_group_status == "Available":
+                logging.info(f"Server group {server_group_id} is available.")
+                alb_client.update_server_group_servers_attribute_with_options(request, runtime)
             logging.info(f"Successfully updated servers {instance_id_list} in group {server_group_id} to weight {weight}.")
         except Exception as e:
             logging.error(e)
@@ -517,4 +527,3 @@ def update_server_group_servers_attribute(alb_client, server_group_id_list, inst
         update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port)
         time.sleep(sleep_time)
 
-