9
votes

Traitement des files d'attente SQS avec Boto

J'ai un script Python à l'aide de la bibliothèque de Boto sur l'instance EC2 faisant partie d'un groupe d'autoscalage. Le script traite les messages d'une file d'attente SQS:

import boto
from boto.sqs.message import Message

conn = boto.connect_sqs()
q = conn.create_queue('queue-name')

while (qin.count() > 0):
    m = q.get_messages()
    #do something with the message


3 commentaires

Vous savez quelle bibliothèque de rubis? J'aimerais y jeter un coup d'oeil


NOP désolé, je ne l'ai vu que dans la question liée ci-dessus.


Checkout SNS - Il vaut mieux pousser puis tirer. Et ils travaillent très bien ensemble ensemble docs.aws.amazon.com/sns/ Dernier / DG / SENDMESSAGETOSQS.HTML


3 Réponses :


7
votes

Vous ne devriez pas compter sur le compte pour une file d'attente, car il est seulement destiné à fournir un nombre approximatif et n'est pas garanti d'être précis.

Si vous voulez continuer à sonder pour toujours, faites cela: P >

while 1:
    messages = q.get_messages()
    # do something with messages
    time.sleep(N)


0 commentaires

3
votes
  1. Lorsque vous tirez un message à partir de SQS, le message devient invisible et inaccessible par d'autres requêtes de la file d'attente (la modification - invisibilité peut être définie entre 0 et 12 heures).
  2. Vous devrez obtenir la file d'attente à chaque fois que de nouveaux messages sont ajoutés, mais cela ne devrait pas être un problème - c'est pourquoi le service de file d'attente existe en premier lieu.

    Si vous souhaitez interroger constamment la file d'attente, essayez ce qu'on appelle BURINGE LONG - Vous pouvez avoir un sondage continu pendant 20 secondes pouvant aller jusqu'à 20 secondes lorsque la file d'attente est peuplée.

    J'espère que c'est utile, sinon piquez sur le Boto SQS Documentation .


1 commentaires

L'invisibilité du message est par défaut 30 secondes, pas 4 jours. Et cette période peut être modifiée.



5
votes

Exemple: xxx


0 commentaires