es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En la bucle While en Python, el valor de la variable de condición de prueba no se está actualizando – AWS – Boto3.

Hola, soy un traductor de español que traduce documentos de IT. Aquí está la traducción solicitada:

Hola, soy un programador de Python muy nuevo y tengo un problema con el código de consulta de la cuota.

def get_metric_statistics(instance_args):
CMD  = (**consultando la cuota**)
print (CMD)
output = run_command_str(command=CMD, shell_command=True)
applied_quota_value = json.loads(output)
max_quota_metric = applied_quota_value ['Quota']['Value']
print ("max_quota:", max_quota_metric)

CMD1 = (***consultando la métrica***)
print (CMD1)
output1 = run_command_str(command=CMD1, shell_command=True)
print ("output:", output1)
utilized_quota_value = json.loads(output1)
used_quota_metric = utilized_quota_value ['Datapoints'][0]['Maximum']
print ("used:", used_quota_metric)
available_quota = max_quota_metric - used_quota_metric
instance_args["no_of_vcpu"] = un valor

while available_quota < instance_args["no_of_vcpu"]:
    print ("Esperando que los vcpu estén disponibles")
    time.sleep(30)
else:
    print ("La cuota disponible es mayor que los vcpu solicitados, continúa lanzando la instancia")
aws_metric_data = get_metric_statistics(instance_args)
print(aws_metric_data)

Entonces aquí intento verificar la condición e imprimir las declaraciones siguientes, pero cuando la variable con el valor en la condición entra en el bucle, verifica que la condición es verdadera y la verdadera condición se repite incluso después de que la variable haya sido actualizada con un valor diferente. Básicamente, la variable en la condición no se está actualizando. No estoy seguro de cómo obtener esa pieza de código que hace la actualización dentro del bucle.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la variable available_quota que no se actualiza dentro del bucle while. Una solución podría ser mover el cálculo de available_quota dentro del bucle while para que se actualice en cada iteración. Aquí tienes una versión actualizada del código:

    def get_metric_statistics(instance_args):
        CMD  = (**consultando la cuota***)
        print(CMD)
        output = run_command_str(command=CMD, shell_command=True)
        applied_quota_value = json.loads(output)
        max_quota_metric = applied_quota_value['Quota']['Value']
        print("max_quota:", max_quota_metric)
    
        CMD1 = (***consultando la métrica***)
        print(CMD1)
        output1 = run_command_str(command=CMD1, shell_command=True)
        print("output:", output1)
        utilized_quota_value = json.loads(output1)
        used_quota_metric = utilized_quota_value['Datapoints'][0]['Maximum']
        print("used:", used_quota_metric)
    
        instance_args["no_of_vcpu"] = algún valor
    
        while True:
            available_quota = max_quota_metric - used_quota_metric
    
            if available_quota >= instance_args["no_of_vcpu"]:
                print("la cuota disponible es mayor que la vcpu solicitada, continúa lanzando la instancia")
                break
            else:
                print("Esperando que la vcpu esté disponible")
                time.sleep(30)
    
        aws_metric_data = get_metric_statistics(instance_args)
        print(aws_metric_data)
    

    En esta versión, el cálculo de available_quota se mueve dentro del bucle while y se actualiza en cada iteración. El bucle while ahora tiene una condición True, y la declaración break se utiliza para salir del bucle una vez que se cumple la condición. Esto debería asegurarse de que se utilice el valor correcto de available_quota en la verificación de la condición.

Comments are closed.