Merge pull request #410 from djmitche/return-messages-sooner

Return messages once they are gathered
This commit is contained in:
Steve Pulec 2015-08-31 12:58:16 -04:00
commit d88dba1bcf
2 changed files with 10 additions and 5 deletions

View File

@ -281,7 +281,7 @@ class SQSBackend(BaseBackend):
if len(result) >= count:
break
if time.time() > polling_end:
if result or time.time() > polling_end:
break
return result

View File

@ -53,10 +53,14 @@ def test_messages_polling():
time.sleep(.5)
def get_messages():
msg_res = test_client.get(
'/123/testqueue?Action=ReceiveMessage&MaxNumberOfMessages=1&WaitTimeSeconds=5'
)
[messages.append(m) for m in re.findall("<Body>(.*?)</Body>", msg_res.data.decode('utf-8'))]
count = 0
while count < 5:
msg_res = test_client.get(
'/123/testqueue?Action=ReceiveMessage&MaxNumberOfMessages=1&WaitTimeSeconds=5'
)
new_msgs = re.findall("<Body>(.*?)</Body>", msg_res.data.decode('utf-8'))
count += len(new_msgs)
messages.append(new_msgs)
get_messages_thread = threading.Thread(target=get_messages)
insert_messages_thread = threading.Thread(target=insert_messages)
@ -67,4 +71,5 @@ def test_messages_polling():
get_messages_thread.join()
insert_messages_thread.join()
# got each message in a separate call to ReceiveMessage, despite the long WaitTimeSeconds
assert len(messages) == 5