从 sqs 读取消息的有效方法,无需连续轮询

Sre*_*321 1 boto amazon-sqs python-2.7

我对 AWS SQS 队列非常陌生,目前正在使用 python 和 boto。现在我可以通过连续轮询来读取来自 SQS 的消息。

脚本如下:

while 1:
    m = q.read(wait_time_seconds=10)
    if m:
        print m
Run Code Online (Sandbox Code Playgroud)

如何使该脚本不断侦听队列中的新添加内容而不使用 while 循环?有没有一种方法可以为 SQS 编写一个 Python 消费者,而不必定期轮询新消息?

Mic*_*bot 5

并非如此...这就是 SQS 的工作原理。如果在等待期间有消息到达,它几乎会立即返回。

\n\n

这并不是表面上看起来的低效操作。

\n\n

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

\n\n

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

\n