我在亚马逊上有一个 sqs 队列,有几个消费者在轮询它。
最近我发现numberofEmptyReceives有 1000 万,这意味着我正在根据这些请求收费。
以下是我消费消息的方式
while True:
for message in queue.receive_messages(AttributeNames=['All'], MaxNumberOfMessages=10):
Run Code Online (Sandbox Code Playgroud)
我知道有WaitTimeSeconds选项,但文档似乎表明它不做长轮询
调用在返回之前等待消息到达队列的持续时间(以秒为单位)。如果消息可用,则该调用会早于 WaitTimeSeconds 返回。如果没有消息可用并且等待时间到期,则调用成功返回,并带有空消息列表。
具体来说
如果消息可用,则该调用会早于 WaitTimeSeconds 返回。
从上面的句子似乎boto3仍然建议调用sqs以检查是否有消息。
使用 boto3 进行长时间轮询以避免收取请求费用的正确方法是什么?
设置这么简单thread.sleep吗?
我在github上也找不到源代码