2 개의 다른 SQS 대기열을 사용하는 2 개의 다른 python 스크립트로 EC2에서 실행중인 상자가 있습니다. 지난 주 내 스크립트는 갑자기 모두 SQS 큐에서 메시지를 가져 오는 데 너무 오래 걸리는 경우에 매우 효과적이었습니다. 메시지를 가져 오는 경우에도 반복되는 많은 메시지를 가져옵니다.Python SQS boto 신뢰할 수 없거나 잘못 구현 되었습니까?
이self.conn = SQSConnection(SQS_ACCESS_KEY, SQS_SECRET_KEY)
self.queue = self.conn.get_queue(queue_name)
내 스크립트 (메서드은 getMessages 사용) 다음과 같은 방법 :
내이 스크립트는이 같은 방법을 사용하여 다음의 인스턴스는이 경우 self.queue에서def getMessages(self, n):
'''returns n messages erasing them, mutliple of 10'''
msgs=[]
rs=self.queue.get_messages(10)
if len(rs) < 1:
return []
count = 0
while count < n or len(rs) < 10:
msgs.extend(rs)
rs=self.queue.get_messages(10)
count += 10
# delete pulled messages
for msg in msgs:
self.queue.delete_message(msg)
return msgs
입니다
while True:
print 'Getting SQS messages'
messages = sqs.getMessages(50)
print 'Got %s messages' % len(messages)
for msg in messages:
do_something(msg)
print 'Going to sleep'
time.sleep(sleep_time)
이제 내 스크립트는 메시지를 가져 오는 데 너무 오래 걸리며 Getting SQS messages
을 인쇄하고 몇 시간 동안 머물러 있습니다. 그것이 더 이상한 이유는 ipython 셸을 열고 getMessages(50)
을 실행하면 매우 빠르게 실행되고 다른 스크립트는 똑같이 작동하지만 다른 큐에서 작동한다는 것과 그 문제는 전혀 없다는 것입니다.
무엇이 잘못되었을 수 있습니다, 감사합니다.