2015-11-16 3 views
0

У меня есть очередь Amazon SQS, содержащая n количество сообщений, я хочу удалить сообщения из очереди, используя код python. Мой текущий код выглядит следующим образом:Удалить все сообщения 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" 

Но это только удаляет одно сообщение на время, только «УДАЛИТЬ» получает для печати 50 раз. Что мне здесь не хватает?

+0

Часть кода, которая модифицирует 'count', кажется, отсутствует, но похоже, что вы удаляете одно и то же сообщение повторно, считая до 50. –

ответ

2

Если вы хотите удалить все сообщения из очереди, вы можете использовать q.purge().

Примечание. Это действие может занимать не менее 60 секунд. Кроме того, для того, чтобы это работало, вы должны иметь разрешение sqs: PurgeQueue. См. the AWS docs и the boto docs для получения дополнительной информации.

Смежные вопросы