从sqs读取消息而不连续轮询的有效方法

时间:2014-10-21 06:57:26

标签: python-2.7 boto amazon-sqs

我是AWS SQS队列的新手,我目前正在使用python和boto。 现在我可以通过连续轮询从SQS读取消息。

脚本如下:

while 1:
    m = q.read(wait_time_seconds=10)
    if m:
        print m

如何在不使用while循环的情况下使此脚本不断监听队列的新增内容? 有没有办法为SQS编写Python使用者,而不必定期轮询新消息?

1 个答案:

答案 0 :(得分:2)

不是......这就是SQS的工作原理。如果在等待期间收到消息,则几乎会立即返回。

这似乎不是效率低下的操作。

如果你将超时时间增加到最大允许的20秒,那么,在最坏的情况下,你每月产生的不会超过大约3 x 60 x 24 x 30 = 129,600“空”民意调查...×每次投票0.00000050美元= $ 0.0648。 (前1,000,000个请求的费用为0美元。)

请注意,在超时期间,如果有新消息到达,它将立即返回,而不是等待整整20秒。