From bd694825884c20b6bd5b9b54d16ade615ee11599 Mon Sep 17 00:00:00 2001 From: Tamer Sherif Date: Tue, 15 Sep 2020 09:39:07 -0700 Subject: [PATCH 1/5] added docs and a sample code --- .../azure/storage/queue/_queue_client.py | 11 ++++ .../storage/queue/aio/_queue_client_async.py | 1 + .../samples/queue_samples_message.py | 50 +++++++++++++++---- 3 files changed, 53 insertions(+), 9 deletions(-) diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py index f8e626370263..54bc11c54279 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py @@ -500,6 +500,17 @@ def receive_messages(self, **kwargs): messages to retrieve from the queue, up to a maximum of 32. If fewer are visible, the visible messages are returned. By default, a single message is retrieved from the queue with this operation. + When retrieving these pages it is important to pass the output to `by_page()`. + These pages and their content can be iterated through using `next()`. + .. admonition:: Example: + + .. literalinclude:: ../samples/queue_samples_message.py + :start-after: [START receive_messages_listing] + :end-before: [END receive_messages_listing] + :language: python + :dedent: 12 + :caption: List pages and corresponding messages from the queue. + :keyword int visibility_timeout: If not specified, the default value is 0. Specifies the new visibility timeout value, in seconds, relative to server time. diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py b/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py index 21e710554e2a..a38299a3c991 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py @@ -419,6 +419,7 @@ def receive_messages(self, **kwargs): messages to retrieve from the queue, up to a maximum of 32. If fewer are visible, the visible messages are returned. By default, a single message is retrieved from the queue with this operation. + When retrieving these pages it is important to pass the output to `by_page()`. :keyword int visibility_timeout: If not specified, the default value is 0. Specifies the new visibility timeout value, in seconds, relative to server time. diff --git a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py index 9b5ab659b05c..c6d3b31417f9 100644 --- a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py +++ b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py @@ -146,7 +146,7 @@ def send_and_receive_messages(self): # Delete the queue queue.delete_queue() - def delete_and_clear_messages(self): + def list_message_pages(self): # Instantiate a queue client from azure.storage.queue import QueueClient queue = QueueClient.from_connection_string(self.connection_string, "myqueue4") @@ -154,6 +154,37 @@ def delete_and_clear_messages(self): # Create the queue queue.create_queue() + try: + queue.send_message(u"message1") + queue.send_message(u"message2") + queue.send_message(u"message3") + queue.send_message(u"message4") + queue.send_message(u"message5") + queue.send_message(u"message6", visibility_timeout=30) + + # [START receive_messages_listing] + # Store two messages in each page + messages = queue.receive_messages(messages_per_page=2).by_page() + + # Iterate through the page lists + print(list(next(messages))) + print(list(next(messages))) + + # Third list has one message since `message6` is still invisible + print(list(next(messages))) + # [END receive_messages_listing] + + finally: + queue.delete_queue() + + def delete_and_clear_messages(self): + # Instantiate a queue client + from azure.storage.queue import QueueClient + queue = QueueClient.from_connection_string(self.connection_string, "myqueue5") + + # Create the queue + queue.create_queue() + try: # Send messages queue.send_message(u"message1") @@ -181,7 +212,7 @@ def delete_and_clear_messages(self): def peek_messages(self): # Instantiate a queue client from azure.storage.queue import QueueClient - queue = QueueClient.from_connection_string(self.connection_string, "myqueue5") + queue = QueueClient.from_connection_string(self.connection_string, "myqueue6") # Create the queue queue.create_queue() @@ -213,7 +244,7 @@ def peek_messages(self): def update_message(self): # Instantiate a queue client from azure.storage.queue import QueueClient - queue = QueueClient.from_connection_string(self.connection_string, "myqueue6") + queue = QueueClient.from_connection_string(self.connection_string, "myqueue7") # Create the queue queue.create_queue() @@ -242,9 +273,10 @@ def update_message(self): if __name__ == '__main__': sample = QueueMessageSamples() - sample.set_access_policy() - sample.queue_metadata() - sample.send_and_receive_messages() - sample.delete_and_clear_messages() - sample.peek_messages() - sample.update_message() + #sample.set_access_policy() + #sample.queue_metadata() + #sample.send_and_receive_messages() + sample.list_message_pages() + #sample.delete_and_clear_messages() + #sample.peek_messages() + #sample.update_message() From 24744550685c94bca8cc54529d17d64bbe7de956 Mon Sep 17 00:00:00 2001 From: Tamer Sherif Date: Tue, 15 Sep 2020 09:40:34 -0700 Subject: [PATCH 2/5] uncommented --- .../samples/queue_samples_message.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py index c6d3b31417f9..4b29806580b7 100644 --- a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py +++ b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py @@ -273,10 +273,10 @@ def update_message(self): if __name__ == '__main__': sample = QueueMessageSamples() - #sample.set_access_policy() - #sample.queue_metadata() - #sample.send_and_receive_messages() + sample.set_access_policy() + sample.queue_metadata() + sample.send_and_receive_messages() sample.list_message_pages() - #sample.delete_and_clear_messages() - #sample.peek_messages() - #sample.update_message() + sample.delete_and_clear_messages() + sample.peek_messages() + sample.update_message() From 551c8fad206e3e1dd273252eb87645f773b5f475 Mon Sep 17 00:00:00 2001 From: Tamer Sherif Date: Sun, 20 Sep 2020 14:28:04 -0700 Subject: [PATCH 3/5] added better docstrings --- .../azure-storage-queue/azure/storage/queue/_queue_client.py | 4 ++-- .../azure/storage/queue/aio/_queue_client_async.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py index 54bc11c54279..b23b19211fc5 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py @@ -500,8 +500,8 @@ def receive_messages(self, **kwargs): messages to retrieve from the queue, up to a maximum of 32. If fewer are visible, the visible messages are returned. By default, a single message is retrieved from the queue with this operation. - When retrieving these pages it is important to pass the output to `by_page()`. - These pages and their content can be iterated through using `next()`. + `by_page()` can be used to provide a page iterator on the AsyncItemPaged if messages_per_page is set. + `next()` can be used to get the next page. .. admonition:: Example: .. literalinclude:: ../samples/queue_samples_message.py diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py b/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py index a38299a3c991..0bf0b9076763 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/aio/_queue_client_async.py @@ -419,7 +419,8 @@ def receive_messages(self, **kwargs): messages to retrieve from the queue, up to a maximum of 32. If fewer are visible, the visible messages are returned. By default, a single message is retrieved from the queue with this operation. - When retrieving these pages it is important to pass the output to `by_page()`. + `by_page()` can be used to provide a page iterator on the AsyncItemPaged if messages_per_page is set. + `next()` can be used to get the next page. :keyword int visibility_timeout: If not specified, the default value is 0. Specifies the new visibility timeout value, in seconds, relative to server time. From 3c1b1bfdf41400ce05da3a960ad42532b91a1064 Mon Sep 17 00:00:00 2001 From: Tamer Sherif Date: Thu, 24 Sep 2020 17:21:27 -0700 Subject: [PATCH 4/5] changed sample --- .../azure/storage/queue/_queue_client.py | 1 + .../samples/queue_samples_message.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py index b23b19211fc5..3083c71bb6da 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py @@ -502,6 +502,7 @@ def receive_messages(self, **kwargs): a single message is retrieved from the queue with this operation. `by_page()` can be used to provide a page iterator on the AsyncItemPaged if messages_per_page is set. `next()` can be used to get the next page. + .. admonition:: Example: .. literalinclude:: ../samples/queue_samples_message.py diff --git a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py index 4b29806580b7..f5c72c54a120 100644 --- a/sdk/storage/azure-storage-queue/samples/queue_samples_message.py +++ b/sdk/storage/azure-storage-queue/samples/queue_samples_message.py @@ -160,18 +160,20 @@ def list_message_pages(self): queue.send_message(u"message3") queue.send_message(u"message4") queue.send_message(u"message5") - queue.send_message(u"message6", visibility_timeout=30) + queue.send_message(u"message6") # [START receive_messages_listing] # Store two messages in each page - messages = queue.receive_messages(messages_per_page=2).by_page() + message_batches = queue.receive_messages(messages_per_page=2).by_page() # Iterate through the page lists - print(list(next(messages))) - print(list(next(messages))) + print(list(next(message_batches))) + print(list(next(message_batches))) - # Third list has one message since `message6` is still invisible - print(list(next(messages))) + # There are two iterations in the last page as well. + last_page = next(message_batches) + for message in last_page: + print(message) # [END receive_messages_listing] finally: From d35bd387a419adacea1ca4187a0ed0dd7ceed226 Mon Sep 17 00:00:00 2001 From: Tamer Sherif Date: Thu, 24 Sep 2020 18:33:14 -0700 Subject: [PATCH 5/5] changed docstrings --- .../azure/storage/queue/_queue_client.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py index 3083c71bb6da..56f4207b2a75 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_queue_client.py @@ -502,15 +502,14 @@ def receive_messages(self, **kwargs): a single message is retrieved from the queue with this operation. `by_page()` can be used to provide a page iterator on the AsyncItemPaged if messages_per_page is set. `next()` can be used to get the next page. - - .. admonition:: Example: - - .. literalinclude:: ../samples/queue_samples_message.py - :start-after: [START receive_messages_listing] - :end-before: [END receive_messages_listing] - :language: python - :dedent: 12 - :caption: List pages and corresponding messages from the queue. + .. admonition:: Example: + + .. literalinclude:: ../samples/queue_samples_message.py + :start-after: [START receive_messages_listing] + :end-before: [END receive_messages_listing] + :language: python + :dedent: 12 + :caption: List pages and corresponding messages from the queue. :keyword int visibility_timeout: If not specified, the default value is 0. Specifies the