updating receiveFromSQS.py

This commit is contained in:
2019-10-09 01:50:17 +01:00
parent 13b9a6d039
commit 6b7e9192b9
2 changed files with 37 additions and 33 deletions

View File

@@ -11,6 +11,7 @@ class receiveFromSQS(object):
self.session = session self.session = session
self.sqs = session.client('sqs') self.sqs = session.client('sqs')
self.queueURL = queueURL self.queueURL = queueURL
self.messages = []
@classmethod @classmethod
def createSession(cls, profileName, queueURL): def createSession(cls, profileName, queueURL):
@@ -35,7 +36,7 @@ class receiveFromSQS(object):
): ):
self.response = [] self.response = []
loops = int(math.ceil(totalNumberOfMessages / maxNumberOfMessages)) loops = int(math.ceil(totalNumberOfMessages / maxNumberOfMessages))
for i in range(0, loops): for i in range(0, loops * 2):
self.response.append( self.response.append(
self.sqs.receive_message( self.sqs.receive_message(
QueueUrl=self.queueURL, QueueUrl=self.queueURL,
@@ -44,55 +45,58 @@ class receiveFromSQS(object):
) )
return self return self
def _extractMessageFromSQS(self, totalNumberOfMessages): def _extractMessageFromSQS(self, totalNumberOfMessages, deleteOnReceipt):
self.messages = [] self.extractedMessages = []
self.receiptHandles = []
try: try:
loops = len(self.response) loops = len(self.response)
for i in range(0, loops): for i in range(0, loops):
if 'Messages' in self.response[i]: if 'Messages' in self.response[i]:
_message = self.response[i]['Messages'] _message = self.response[i]['Messages']
for rawMessage in _message: for rawMessage in _message:
self.messages.append(rawMessage['Body']) self.extractedMessages.append(rawMessage['Body'])
# self.receiptHandles.append(rawMessage['ReceiptHandle'])
if deleteOnReceipt:
self.sqs.delete_message(
QueueUrl=self.queueURL,
ReceiptHandle=rawMessage['ReceiptHandle'],
)
else: else:
print("No messages in the queue") print('No messages in the queue')
except KeyError: except KeyError:
print("No messages in the queue") print('No messages in the queue')
return self return self
# def receiveMessage( def _decodeMessages(self):
# self, b64=True, MaxNumberOfMessages=10, delete=False, endString='END' if len(self.extractedMessages) == 0:
# ): print('No messages to process')
# while True: else:
# response = self.sqs.receive_message( for message in self.extractedMessages:
# QueueUrl=self.queueURL, decoded = base64.b64decode(message).decode()
# MaxNumberOfMessages=MaxNumberOfMessages self.messages.append(decoded)
# ) return self
# if 'Messages' in response:
# for message in response['Messages']: def _deleteMessage(self, ReceiptHandle):
# if b64: self.sqs.delete_message(
# decoded = base64.b64decode(message['Body']) QueueUrl=self.queueURL, ReceiptHandle=ReceiptHandle
# msg = decoded.decode() )
# if msg == endString:
# return self
# else:
# msg = print(message['Body'])
# if msg == endString:
# return self
# else:
# print('Queue is empty')
# break
def receiveAllMessages(self, b64=True, deleteOnReceipt=False): def receiveAllMessages(self, b64=True, deleteOnReceipt=False):
totalNumberOfMessages = self.getQueueLength() totalNumberOfMessages = self.getQueueLength()
self._receiveSQSMessage( self._receiveSQSMessage(
totalNumberOfMessages, totalNumberOfMessages, deleteOnReceipt=deleteOnReceipt
deleteOnReceipt=deleteOnReceipt
) )
self._extractMessageFromSQS( self._extractMessageFromSQS(
totalNumberOfMessages=totalNumberOfMessages totalNumberOfMessages=totalNumberOfMessages,
deleteOnReceipt=deleteOnReceipt
) )
if b64: if b64:
pass # WRITE THIS IN! self._decodeMessages()
else:
self.messages = self.extractedMessages
# if deleteOnReceipt:
# for receipt in self.receiptHandles:
# self._deleteMessage(receipt)
return self return self
@@ -102,7 +106,7 @@ inst = receiveFromSQS.createSession(
'.com/745437999005/slack-bot.fifo', '.com/745437999005/slack-bot.fifo',
) )
inst.receiveAllMessages() inst.receiveAllMessages(deleteOnReceipt=False)
for item in inst.messages: for item in inst.messages:
print(item) print(item)