自動スケーリング グループの一部である ec2 インスタンスで boto ライブラリを使用する python スクリプトがあります。スクリプトは 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() は次のようにリアルタイムで更新されますか?
- 他のインスタンスはメッセージをキューから取り出します (または、2 倍にするつもりですか)。
- 新しいメッセージがキューに追加されます (または、見逃してしまいますか?)
キューが空であっても、このスクリプトがキューへの新しい追加を常にリッスンするようにするにはどうすればよいですか?
この質問Processing items in SQS queue with a php scriptでは、「sqs ruby クライアント ライブラリには、キューを継続的にポーリングし、キューでメッセージを受信するとそれをブロックに渡すメソッド「poll」がある」と述べられています。Pythonに同等のものはありますか?
SNS を使用してスクリプトにメッセージ キューのステータスを通知することも提案されていますが、メトリクス アラームが十分に細かく設定されていないため、SNS を使用して応答システムを構成する方法がわかりません。