如何使用Boto获取AWS SQS已在飞行中的消息

4

我尝试了boto api,似乎没有任何api可以获取已在飞行中的消息数量?有人能给我一个提示如何获取这个数字吗?

1个回答

8
要在boto中查找正在传输的消息或SQS队列的其他属性,需要执行以下操作:
import boto.sqs
c = boto.sqs.connect_to_region('us-east-1')
queue = c.lookup('myqueue')
attr = queue.get_attributes()

这将会是一个类似于以下格式的Python字典:
{u'ApproximateNumberOfMessages': u'0',
 u'ApproximateNumberOfMessagesDelayed': u'0',
 u'ApproximateNumberOfMessagesNotVisible': u'0',
 u'CreatedTimestamp': u'1412270007',
 u'DelaySeconds': u'0',
 u'LastModifiedTimestamp': u'1412270007',
 u'MaximumMessageSize': u'262144',
 u'MessageRetentionPeriod': u'345600',
 u'QueueArn': u'arn:aws:sqs:us-east-1:723405645490:16ac1da3-564c-43aa-8dcb-4db41ece50ea',
 u'ReceiveMessageWaitTimeSeconds': u'0',
 u'VisibilityTimeout': u'30'}

我相信ApproximateNumberOfMessagesNotVisible等同于控制台报告的in-flight统计数据。

我尝试了你的脚本,它可以正常工作。谢谢。 - guile chao
对于更新版本的boto,您可能需要更改为以下内容: sqs = boto3.resource('sqs') sqs_queue = sqs.get_queue_by_name(QueueName='yourqueue') messages = sqs_queue.attributes["ApproximateNumberOfMessages"] - user3821178

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接