【发布时间】:2012-06-23 07:23:41
【问题描述】:
我有一个使用 ec2 实例上的 boto 库的 python 脚本,它是自动缩放组的一部分。该脚本处理来自 SQS 队列的消息:
import boto
from boto.sqs.message import Message
conn = boto.connect_sqs()
q = conn.create_queue('queue-name')
while (qin.count() > 0):
m = q.get_messages()
#do something with the message
使用 while 语句有意义吗? count() 是否实时更新为:
- 其他实例将消息从队列中取出(或者我要加倍)
- 新消息被添加到队列中(或者我会错过它们吗?)
如何让这个脚本不断地监听队列中的新增内容,即使队列是空的?
在这个问题Processing items in SQS queue with a php script 中提到'sqs ruby 客户端库有一个方法“poll”,它不断地轮询队列,并在接收到队列中的消息时将其传递给一个块'。 Python中是否有等价物?
也有人建议可以使用 SNS 来通知脚本消息队列状态,但我看不出如何使用 SNS 配置响应式系统,因为指标警报的粒度不够细。
【问题讨论】:
-
你知道哪个 ruby 库吗?我想看看
-
不抱歉,我只在上面链接的问题中看到它。
-
结帐 SNS - 最好是推而不是拉。他们一起工作得很好docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html
标签: python amazon-web-services boto amazon-sqs