Allow deleting of SQS invisible messages. Closes #352.
This commit is contained in:
parent
6b44e41249
commit
0195e04053
@ -259,7 +259,7 @@ class SQSBackend(BaseBackend):
|
|||||||
for message in queue._messages:
|
for message in queue._messages:
|
||||||
# Only delete message if it is not visible and the reciept_handle
|
# Only delete message if it is not visible and the reciept_handle
|
||||||
# matches.
|
# matches.
|
||||||
if not message.visible and message.receipt_handle == receipt_handle:
|
if message.receipt_handle == receipt_handle:
|
||||||
continue
|
continue
|
||||||
new_messages.append(message)
|
new_messages.append(message)
|
||||||
queue._messages = new_messages
|
queue._messages = new_messages
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import boto
|
import boto
|
||||||
from boto.exception import SQSError
|
from boto.exception import SQSError
|
||||||
from boto.sqs.message import RawMessage
|
from boto.sqs.message import RawMessage, Message
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import sure # noqa
|
import sure # noqa
|
||||||
@ -441,3 +441,24 @@ def test_purge_action():
|
|||||||
queue.purge()
|
queue.purge()
|
||||||
|
|
||||||
queue.count().should.equal(0)
|
queue.count().should.equal(0)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_sqs
|
||||||
|
def test_delete_message_after_visibility_timeout():
|
||||||
|
VISIBILITY_TIMEOUT = 1
|
||||||
|
conn = boto.sqs.connect_to_region("us-east-1")
|
||||||
|
new_queue = conn.create_queue('new-queue', visibility_timeout=VISIBILITY_TIMEOUT)
|
||||||
|
|
||||||
|
m1 = Message()
|
||||||
|
m1.set_body('Message 1!')
|
||||||
|
new_queue.write(m1)
|
||||||
|
|
||||||
|
assert new_queue.count() == 1
|
||||||
|
|
||||||
|
m1_retrieved = new_queue.read()
|
||||||
|
|
||||||
|
time.sleep(VISIBILITY_TIMEOUT + 1)
|
||||||
|
|
||||||
|
m1_retrieved.delete()
|
||||||
|
|
||||||
|
assert new_queue.count() == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user