使用 Python 删除 SQS 的所有消息
Delete all messages of SQS using Python
我有一个包含 n 条消息的 Amazon SQS 队列,我想使用 python 代码从队列中删除消息。我当前的代码如下:
import boto.sqs
sqs = boto.sqs.connect_to_region("ap-southeast-1", aws_access_key_id='XXX', aws_secret_access_key='XXX')
q = sqs.get_queue("grand_torm") #SQS queue name
#text_file = open('download.json', 'w')
m = q.read(visibility_timeout=15)
if m == None:
print "No message!"
else:
count = 0
while (count < 50):
q.delete_message(m)
print "DELETED"
但这一次只能删除一条消息,只能打印 "DELETED" 50 次。我在这里错过了什么?
如果要删除队列中的所有消息,可以使用q.purge()
。
请注意,此操作可能至少需要 60 秒才能完成。此外,为了使其工作,您必须具有 sqs:PurgeQueue 权限。有关详细信息,请参阅 the AWS docs and the boto docs。
如果您只想执行一次,您可以通过登录您的 AWS 账户 -> sqs -> 您的 sqs 队列 -> 清除来手动执行。
我有一个包含 n 条消息的 Amazon SQS 队列,我想使用 python 代码从队列中删除消息。我当前的代码如下:
import boto.sqs
sqs = boto.sqs.connect_to_region("ap-southeast-1", aws_access_key_id='XXX', aws_secret_access_key='XXX')
q = sqs.get_queue("grand_torm") #SQS queue name
#text_file = open('download.json', 'w')
m = q.read(visibility_timeout=15)
if m == None:
print "No message!"
else:
count = 0
while (count < 50):
q.delete_message(m)
print "DELETED"
但这一次只能删除一条消息,只能打印 "DELETED" 50 次。我在这里错过了什么?
如果要删除队列中的所有消息,可以使用q.purge()
。
请注意,此操作可能至少需要 60 秒才能完成。此外,为了使其工作,您必须具有 sqs:PurgeQueue 权限。有关详细信息,请参阅 the AWS docs and the boto docs。
如果您只想执行一次,您可以通过登录您的 AWS 账户 -> sqs -> 您的 sqs 队列 -> 清除来手动执行。