user299709
user299709

Reputation: 5412

boto3: can't find queue that was immediately created before

I create an SQS queue in boto3 and immediately look for it via sqs.list_queues but it won't return anything.

when I input the SQS queue name into the console, it won't return anything until I input it again the second time.

So does this mean I need to call list_queues twice? Why is this happening? Why isn't AWS return queues that was immediately created before?

    sqs = boto3.client('sqs')
    myQ = sqs.create_queue(QueueName='just_created')

    response = sqs.list_queues(
        QueueNamePrefix='just_created'
    )

response does not contain the usual array of QueueUrls

Upvotes: 0

Views: 857

Answers (1)

Sébastien Stormacq
Sébastien Stormacq

Reputation: 14905

Just like many AWS services, SQS control plane is eventually consistent, meaning that it takes a while to propagate the data accross the systems.

If you need the URL of the queue you just created, you can find it in the return value of the create_queue call.

The following operation creates an SQS queue named MyQueue.

response = client.create_queue(
    QueueName='MyQueue',
)

print(response)

Expected Output:

{
    'QueueUrl': 'https://queue.amazonaws.com/012345678910/MyQueue',
    'ResponseMetadata': {
        '...': '...',
    },
}

Upvotes: 1

Related Questions