Обработка очередей SQS с помощью boto

У меня есть скрипт на Python, использующий библиотеку boto на экземпляре ec2, который является частью группы автоматического масштабирования. Сценарий обрабатывает сообщения из очереди 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

Имеет ли смысл использовать оператор while? Обновляется ли count() в режиме реального времени, когда:

  1. другие экземпляры берут сообщения из очереди (или я собираюсь удвоить)
  2. новые сообщения добавляются в очередь (или я их пропущу?)

Как заставить этот скрипт постоянно прослушивать новые добавления в очередь, даже если очередь пуста?

В этом вопросе Обработка элементов в очереди SQS с помощью php-скриптаупоминалось, что в клиентской библиотеке sqs ruby ​​есть метод «опрос», который постоянно опрашивает очередь и при получении сообщения в очереди проходит это на блок ». Есть ли аналог в Python?

Также предполагалось, что SNS можно использовать для уведомления сценариев о состоянии очереди сообщений, но я не понимаю, как можно настроить быстро реагирующую систему с помощью SNS, поскольку метрические оповещения недостаточно детализированы.

9
задан Community 23 May 2017 в 12:02
поделиться