Вариант 1: у boto sqs есть метод purge_queue для python:
purge_queue(queue)
Purge all messages in an SQS Queue.
Parameters: queue (A Queue object) – The SQS queue to be purged
Return type: bool
Returns: True if the command succeeded, False otherwise
Источник: http://boto.readthedocs.org/en/latest/ref/sqs.html
Код, который работает для меня:
conn = boto.sqs.connect_to_region('us-east-1',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)
q = conn.create_queue("blah")
#add some messages here
#invoke the purge_queue method of the conn, and pass in the
#queue to purge.
conn.purge_queue(self.queue)
Для меня это удалило очередь. Тем не менее, Amazon SQS позволяет запускать это только один раз каждые 60 секунд. Поэтому мне пришлось использовать вторичное решение ниже:
Вариант 2. Выполните очистку, используя все сообщения в цикле while и выбрасывая их:
all_messages = []
rs = self.queue.get_messages(10)
while len(rs) > 0:
all_messages.extend(rs)
rs = self.queue.get_messages(10)