【问题标题】:Efficient method to read messages from sqs without polling consecutively从sqs读取消息而无需连续轮询的有效方法
【发布时间】:2014-10-21 19:15:44
【问题描述】:
我对 AWS SQS 队列非常陌生,目前正在使用 python 和 boto。
现在我可以通过连续轮询从 SQS 读取消息。
脚本如下:
while 1:
m = q.read(wait_time_seconds=10)
if m:
print m
如何在不使用 while 循环的情况下使此脚本不断侦听队列中的新增内容?
有没有办法为 SQS 编写 Python 消费者,而不必定期轮询新消息?
【问题讨论】:
标签:
python-2.7
boto
amazon-sqs
【解决方案1】:
不是真的……这就是 SQS 的工作原理。如果在等待期间有消息到达,它几乎会立即返回。
这并不是看起来的低效操作。
如果您将超时时间增加到允许的最大值 20 秒,那么在最坏的情况下,您每月将生成不超过 3 x 60 x 24 x 30 = 129,600 个“空”民意调查... × 每次民意调查 $0.00000050 = 0.0648 美元。 (前 1,000,000 个请求的费用为 0 美元。)
请注意,在超时期间,如果有新消息到达,它将几乎立即返回,而不是等待整整 20 秒。