我有一个使用boto库在EC2实例上的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()是否实时更新,例如:
- 其他实例从队列中取出信息(否则会重复)
- 新的消息添加到队列中(否则会错过它们)
如何使此脚本始终监听队列的新添加,即使队列为空?
在这个问题使用php脚本处理SQS队列中的项目中提到了'sqs ruby client library'有一个方法"poll",可以持续轮询队列,并在接收到队列中的消息时将其传递给一个块。Python中是否有类似的方法?
还建议使用SNS通知脚本消息队列的状态,但我不知道如何使用SNS配置响应系统,因为度量警报不够精细。