While 使用用户输入循环下面的代码

While loop for code below with user input

想要一段代码,我在其中请求队列名称,然后使用提供的名称创建新的 sqs 队列。如果队列名称已经存在,则希望循环提示新名称

import boto3

sqs = boto3.resource('sqs')
all_queues = sqs.queues.all()


while True:
    sqs_queue_name = input("Enter queue name: ")
    for queue in all_queues:
        if queue.attributes['QueueArn'].split(":")[-1] == sqs_queue_name:
            print(f"Queue {sqs_queue_name} already exists")
            continue
        else:
            queue = sqs.create_queue(QueueName=sqs_queue_name, Attributes={'DelaySeconds':'5'})
            print(queue.url)
            print(queue.attributes.get('DelaySeconds'))

我做错了什么?代码一直要求我输入队列名称,所以 while 循环有问题,看不出有什么问题...

假设调用 all_queues = sqs.queues.all() returns 一个列表,

我会打破 while True: 建立新队列的循环。

我还会消除内部 for 循环。相反,我会制作一个队列名称列表,然后检查队列名称 I select 是否在该列表中。如果是,我需要不断询问用户新的队列名称。如果不是,则创建新队列并跳出循环。

像这样:

import boto3

sqs = boto3.resource('sqs')
all_queues = sqs.queues.all()
queue_names = [x.attributes['QueueArn'].split(":")[-1] for x in all_queues]
while True:
    sqs_queue_name = input("Enter queue name: ")
    if sqs_queue_name in queue_names:
        print(f"Queue {sqs_queue_name} already exists")
        continue
    else:
        queue = sqs.create_queue(QueueName=sqs_queue_name, Attributes=   {'DelaySeconds':'5'})
        print(queue.url)
        print(queue.attributes.get('DelaySeconds'))
        break