Add error handling to sqs.delete_message
This commit is contained in:
parent
c3cb411c07
commit
51117c948a
4 changed files with 43 additions and 4 deletions
|
|
@ -7,9 +7,14 @@ class MessageNotInflight(Exception):
|
|||
status_code = 400
|
||||
|
||||
|
||||
class ReceiptHandleIsInvalid(Exception):
|
||||
description = "The receipt handle provided is not valid."
|
||||
status_code = 400
|
||||
class ReceiptHandleIsInvalid(RESTError):
|
||||
code = 400
|
||||
|
||||
def __init__(self):
|
||||
super(ReceiptHandleIsInvalid, self).__init__(
|
||||
'ReceiptHandleIsInvalid',
|
||||
'The input receipt handle is invalid.'
|
||||
)
|
||||
|
||||
|
||||
class MessageAttributesInvalid(Exception):
|
||||
|
|
|
|||
|
|
@ -669,6 +669,10 @@ class SQSBackend(BaseBackend):
|
|||
|
||||
def delete_message(self, queue_name, receipt_handle):
|
||||
queue = self.get_queue(queue_name)
|
||||
|
||||
if not any(message.receipt_handle == receipt_handle for message in queue._messages):
|
||||
raise ReceiptHandleIsInvalid()
|
||||
|
||||
new_messages = []
|
||||
for message in queue._messages:
|
||||
# Only delete message if it is not visible and the reciept_handle
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class SQSResponse(BaseResponse):
|
|||
receipt_handle=receipt_handle,
|
||||
visibility_timeout=visibility_timeout
|
||||
)
|
||||
except (ReceiptHandleIsInvalid, MessageNotInflight) as e:
|
||||
except MessageNotInflight as e:
|
||||
return "Invalid request: {0}".format(e.description), dict(status=e.status_code)
|
||||
|
||||
template = self.response_template(CHANGE_MESSAGE_VISIBILITY_RESPONSE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue