2015-11-16 72 views
0

我有一個Amazon SQS隊列持有n個消息,我想使用Python代碼從隊列中刪除消息。我目前的代碼如下所示:使用Python刪除SQS的所有消息

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次。我在這裏錯過了什麼?

+0

修改「count」的代碼部分似乎丟失了,但看起來好像您正在重複刪除相同的消息,同時數到50。 –

回答

2

如果要刪除隊列中的所有消息,可以使用q.purge()

請注意,此操作可能需要至少60秒才能完成。此外,爲了使其工作,您必須具有sqs:PurgeQueue權限。有關更多信息,請參閱the AWS docsthe boto docs