Comment obtenir tous les messages dans la file d'attente Amazon SQS à l'aide de boto bibliothèque en Python?

Je travaille sur une application dont le flux de travail est géré par la transmission de messages dans SQS, à l'aide de boto.

Ma file d'attente SQS est croissant progressivement, et je n'ai aucun moyen de vérifier combien d'éléments il est censé contenir.

Maintenant, j'ai un démon qui vérifient périodiquement la file d'attente, et vérifie si j'ai une taille fixe de l'ensemble des éléments. Par exemple, considérons la suite de "file d'attente":

q = ["msg1_comp1", "msg2_comp1", "msg1_comp2", "msg3_comp1", "msg2_comp2"]

Maintenant, je veux vérifier si j'ai "msg1_comp1", "msg2_comp1" et "msg3_comp1" dans la file d'attente, ensemble, à un certain point dans le temps, mais je ne sais pas la taille de la file d'attente.

Après la recherche par le biais de l'API, il semble que vous pouvez obtenir seulement 1 élément, ou un nombre fixe d'éléments dans la file d'attente, mais pas tous:

>>> rs = q.get_messages()
>>> len(rs)
1
>>> rs = q.get_messages(10)
>>> len(rs)
10

Une suggestion proposée dans les réponses serait d'obtenir par exemple de 10 messages dans une boucle jusqu'à ce que je obtenir rien en retour, mais les messages dans SQS avoir une visibilité délai d'attente, ce qui signifie que si je le sondage, les éléments de la file d'attente, ils ne sont pas réellement supprimés, ils ne seront invisibles pour une courte période de temps.

Est-il un moyen simple d'obtenir tous les messages dans la file d'attente, sans savoir combien il y a?

OriginalL'auteur Charles Menguy | 2012-04-16