async def DescribeAvailableResource(ns): """ 计算资源的库存信息 包含 DescribeInstanceTypes(服务器规格信息) instance_charge_type= PostPaid(默认):按量计费 | PrePaid:包年包月 zone_id= 可用地区id """ configuration = volcenginesdkcore.Configuration() configuration.ak = "AKLTOTc3ODVmNWNlZjBhNDM4ZDhhNzczZmZiNDRkYTY5Zjg" configuration.sk = "TldNMlpHSmlOVGt6TkRGbE5EUXdNRGhqTlRVM1lUSTNNRGs0TmpJMVlUVQ==" configuration.region = "cn-beijing" # set default configuration volcenginesdkcore.Configuration.set_default(configuration) api_instance = volcenginesdkecs.ECSApi() data_list = [] data_statusAvailable = [] resps = '' try: #判断前段传递是否有分页数据,没有就证明是第一次进页面 if not ns.get('data_statusAvailable'): data = volcenginesdkecs.DescribeAvailableResourceRequest( destination_resource = 'InstanceType', instance_charge_type = ns['instance_charge_type'], # zone_id = 'cn-beijing-a' ) resps = api_instance.describe_available_resource(data).to_dict() for i in resps['available_zones']: for j in i['available_resources']: data_list.extend(j['supported_resources']) for i in data_list: if i['status'] == 'Available': if i not in data_statusAvailable: #携带参数如果有实例类型 if ns.get('types'): typea = (i['value'].split('.'))[1] if typea in ns.get('types'): data_statusAvailable.append(i) else: data_statusAvailable.append(i) #携带参数有实例类型判断 """ 服务器规格信息 next_token = 上页次返回的分页标识next_token data_statusAvailable = 每页10条数据id 前端获取 """ instance_type_ids = [] if ns.get('data_statusAvailable'): for i in data_statusAvailable: instance_type_ids.append(i['value']) else: #第一次请求时构造10条数据返回 for i in data_statusAvailable[:10]: instance_type_ids.append(i['value']) data = volcenginesdkecs.DescribeInstanceTypesRequest( instance_type_ids=instance_type_ids ) resp = api_instance.describe_instance_types(data) return {"status":True,'data':resp.to_dict(),'list':data_statusAvailable} except ApiException as e: return {'status': False, 'msg': "Exception when calling api: %s\n" % e} ret = await DescribeAvailableResource(params_kw) return ret