Я работаю над приложением, чей рабочий процесс управляется передачей сообщений в SQS, используя boto.
Моя очередь SQS постепенно растет, и я не могу проверить, сколько элементов она должна содержать.
Теперь у меня есть демон, который периодически обследует очередь и проверяет, есть ли у меня набор элементов фиксированного размера. Например, рассмотрим следующую "очередь":
q = ["msg1_comp1", "msg2_comp1", "msg1_comp2", "msg3_comp1", "msg2_comp2"]
Теперь я хочу проверить, есть ли у меня "msg1_comp1", "msg2_comp1" и "msg3_comp1" в очереди вместе в какой-то момент времени, но я не знаю размер очереди.
После просмотра API вы можете либо получить только 1 элемент, либо фиксированное количество элементов в очереди, но не все:
>>> rs = q.get_messages()
>>> len(rs)
1
>>> rs = q.get_messages(10)
>>> len(rs)
10
Предложение, предложенное в ответах, состояло в том, чтобы получить, например, 10 сообщений в цикле до тех пор, пока я ничего не получу, но сообщения в SQS имеют тайм-аут видимости, а это означает, что если я опросу элементов из очереди, они не будут действительно удалены, они будут невидимыми только на короткий промежуток времени.
Есть ли простой способ получить все сообщения в очереди, не зная, сколько их есть?