目前我们使用包boto
获取队列消息,然后进行一些处理。相关代码是:
from boto.sqs.message import RawMessage
import boto.sqs
import boto.sns
import json
conn = boto.sqs.connect_to_region(
"us-west-1",
aws_access_key_id="XXXXXXX",
aws_secret_access_key="XXXXXXX")
q=conn.get_queue('queueName')
q.set_message_class(RawMessage)
res=q.get_messages(10,wait_time_seconds=1)
....
其余的只是处理代码(对问题不重要)。这段代码完美无缺。
我想知道是否有办法从python获取队列的指标,例如NumberOfMessagesSent
。
根据此帖子get metrics和CloudWatch网站,我认为可能会有类似
的内容conn = boto.sqs.cloudwatch.connect_to_region()
我能从中做到
conn.get_metric_statistics()
但似乎并非如此(除非我遗漏了一些东西)。
我找到了code这个非常好的部分。但我想知道boto.sqs
答案 0 :(得分:1)
如果您致电q.get_attributes()
ApproximateNumberOfMessages,ApproximateNumberOfMessagesNotVisible, VisibilityTimeout,CreatedTimestamp,LastModifiedTimestamp,Policy ReceiveMessageWaitTimeSeconds
对于NumberOfMessagesSent
之类的内容,您需要在CloudWatch中查询数据SQS日志。您链接的代码看起来像是使用boto查询CloudWatch指标的正确方法。
答案 1 :(得分:0)
谢谢,
另外,如果有人发现它有用,我们发现了与我链接的code类似的方式,但也许更简洁一点。
import boto
import datetime
conn = boto.connect_cloudwatch(aws_access_key_id="xxx",aws_secret_access_key="xxx")
conn.get_metric_statistics(
300,
datetime.datetime.utcnow() - datetime.timedelta(seconds=300),
datetime.datetime.utcnow(),
'ApproximateNumberOfMessagesVisible',
'AWS/SQS',
'Average',
dimensions={'QueueName':['Myqueuename']}
)