我在亚马逊上有一个SQS队列,有几个消费者正在轮询它。
最近我发现
以下是我消费消息的方式。
我知道有
等待消息到达队列的持续时间(以秒为单位),然后才返回调用。如果有消息可用,则调用比WaitTimeSeconds更快地返回。如果没有消息可用且等待时间过期,则调用成功返回一个空消息列表。
特别是
如果有消息可用,则调用比WaitTimeSeconds更快地返回。
从上面的句子中可以看出,似乎
使用boto3进行长轮询的正确方法是什么,以避免请求费用?
设置
我还找不到github上的源代码。
最近我发现
numberofEmptyReceives
已经达到了一千万次,这意味着我需要为这些请求付费。以下是我消费消息的方式。
while True:
for message in queue.receive_messages(AttributeNames=['All'], MaxNumberOfMessages=10):
我知道有
WaitTimeSeconds
选项,但文档似乎表明它不进行长轮询。等待消息到达队列的持续时间(以秒为单位),然后才返回调用。如果有消息可用,则调用比WaitTimeSeconds更快地返回。如果没有消息可用且等待时间过期,则调用成功返回一个空消息列表。
特别是
如果有消息可用,则调用比WaitTimeSeconds更快地返回。
从上面的句子中可以看出,似乎
boto3
仍会调用sqs
来检查是否有消息。使用boto3进行长轮询的正确方法是什么,以避免请求费用?
设置
thread.sleep
就这么简单吗?我还找不到github上的源代码。