У меня есть скрипт 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() в режиме реального времени как:
- другие экземпляры берут сообщения из очереди (или я собираюсь удвоить)
- в очередь добавляются новые сообщения (или я их пропущу?)
Как заставить этот скрипт постоянно прослушивать новые добавления в очередь, даже если очередь пуста?
В этом вопросе обработка элементов в очереди SQS с помощью php-скрипта было упомянуто, что «клиентская библиотека sqs ruby имеет метод «опрос», который непрерывно опрашивает очередь и при получении сообщения в очереди передает его блоку». Есть ли аналог в Python?
Также предполагалось, что SNS можно использовать для уведомления сценариев о состоянии очереди сообщений, но я не понимаю, как можно настроить реагирующую систему с SNS, поскольку метрические оповещения недостаточно детализированы.