Files
python-VM/slack-bot/traffic-scraper/prd/receiveFromSQS.py

83 lines
2.4 KiB
Python

import boto3
import base64
class receiveFromSQS(object):
"""docstring for receiveFromSQS"""
def __init__(self, session, queueURL):
super(receiveFromSQS, self).__init__()
self.session = session
self.sqs = session.client('sqs')
self.queueURL = queueURL
@classmethod
def createSession(cls, profileName, queueURL):
session = boto3.Session(profile_name=profileName)
return cls(session, queueURL)
def getQueueLength(self):
attributeNames = ['ApproximateNumberOfMessages']
self.queueAttributes = self.sqs.get_queue_attributes(
QueueUrl=self.queueURL,
AttributeNames=attributeNames,
)
self.queueLength = int(
self.queueAttributes['Attributes'][
'ApproximateNumberOfMessages'
]
)
return self.queueLength
def _receiveSQSMessage(self, maxNumberOfMessages=10):
response = self.sqs.receive_message(
QueueUrl=self.queueURL,
MaxNumberOfMessages=maxNumberOfMessages,
)
return response
def _extractMessageFromSQS(self):
pass
def receiveMessage(
self,
b64=True,
MaxNumberOfMessages=10,
delete=False,
endString='END',
):
while True:
response = self.sqs.receive_message(
QueueUrl=self.queueURL,
MaxNumberOfMessages=MaxNumberOfMessages,
)
if 'Messages' in response:
for message in response['Messages']:
if b64:
decoded = base64.b64decode(
message['Body']
)
msg = decoded.decode()
print(msg)
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, delete=False):
while True:
self.response = self._receiveSQSMessage()
inst = receiveFromSQS.createSession(
profileName='plex-aws',
queueURL='https://sqs.eu-west-1.amazonaws'
'.com/745437999005/slack-bot.fifo',
)
inst.getQueueLength()