Receive a message

from platonic.sqs.queue import SQSReceiver
from platonic.timeout import ConstantTimeout
from datetime import timedelta

incoming_numbers = SQSReceiver[int](
    url='https://sqs.us-west-2.amazonaws.com/123456789012/queue-name',
    # Thus we prevent the receiver from blocking forever if queue is empty
    timeout=ConstantTimeout(period=timedelta(minutes=3)),
)

# If the queue is empty, this call with block until there is a message.
cmd = incoming_numbers.receive()
assert cmd.value == 15
# Do complicated stuff with the value
print(cmd.value * 1234 + 5767)

Warning

The message will appear again in the queue after visibility timeout expires, and you will receive it again, if you do not acknowledge the message after successful processing.

class platonic.sqs.queue.SQSReceiver(*args, **kwds)
receive(self)

Fetch one message from the queue.

If the queue is empty, by default block forever until a message arrives. See timeout argument of SQSReceiver class to see how to change that.

The id field of Message class is provided with ReceiptHandle property of the received message. This is a non-global identifier which is necessary to delete the message from the queue using self.acknowledge().