使用 Python 2 版用戶端程式庫的 Azure 佇列儲存體程式碼範例
本文將說明使用了 Azure 佇列儲存體用戶端程式庫的程式碼範例 (適用於 Python 2 版)。
在 2023 年 3 月 31 日,我們已淘汰不符合目前 Azure SDK 指導方針的 Azure SDK 程式庫支援。 新的 Azure SDK 程式庫會定期更新,以促進一致的體驗並加強您的安全性態勢。 建議您轉換至新的 Azure SDK 程式庫,以利用新功能和重大安全性更新。
雖然較舊的程式庫仍可在 2023 年 3 月 31 日之後使用,但它們將不再收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告。
如需使用最新 12.x 版用戶端程式庫的程式碼範例,請參閱快速入門:適用於 Python 的 Azure 佇列儲存體用戶端程式庫。
建立佇列
新增下列 import
指示詞:
from azure.storage.queue import (
QueueService,
QueueMessageFormat
)
下列程式碼使用儲存體連接字串來建立 QueueService
物件。
# Retrieve the connection string from an environment
# variable named AZURE_STORAGE_CONNECTION_STRING
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING")
# Create a unique name for the queue
queue_name = "queue-" + str(uuid.uuid4())
# Create a QueueService object which will
# be used to create and manipulate the queue
print("Creating queue: " + queue_name)
queue_service = QueueService(connection_string=connect_str)
# Create the queue
queue_service.create_queue(queue_name)
Azure 佇列訊息會儲存為文字。 如果您想要儲存二進位資料,請在將訊息放入佇列之前,先設定 Base64 編碼和解碼函數。
在佇列儲存體物件上設定 Base64 編碼和解碼函數:
# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode
將訊息插入佇列
若要將訊息插入佇列,請使用 put_message
方法建立新訊息,並將它新增至佇列。
message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)
查看訊息
您可以藉由呼叫 peek_messages
方法來瞄核訊息,而不需要從佇列中移除訊息。 根據預設,這個方法會瞄核單一訊息。
messages = queue_service.peek_messages(queue_name)
for peeked_message in messages:
print("Peeked message: " + peeked_message.content)
變更佇列訊息的內容
下列程式碼使用 update_message
方法來更新訊息。 可見度逾時設定為 0,表示會立即顯示訊息,並且會更新內容。
messages = queue_service.get_messages(queue_name)
for message in messages:
queue_service.update_message(
queue_name, message.id, message.pop_receipt, 0, u"Hello, World Again")
取得佇列長度
get_queue_metadata
方法會傳回包含 approximate_message_count
在內的佇列屬性。
metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))
由於服務在回應您的要求之後可以新增或移除訊息,此結果僅為近似值。
清除佇列中的訊息
呼叫 get_messages 時,依預設,您會取得佇列中的下一個訊息。 讀取此佇列訊息的任何其他程式碼皆無法看到從 get_messages
傳回的訊息。 依預設,此訊息會隱藏 30 秒。 若要完成從佇列中移除訊息的作業,您還必須呼叫 delete_message。
messages = queue_service.get_messages(queue_name)
for message in messages:
print("Deleting message: " + message.content)
queue_service.delete_message(queue_name, message.id, message.pop_receipt)
自訂從佇列中擷取訊息的方法有兩種。 首先,您可以取得一批訊息 (最多 32 個)。 其次,您可以設定較長或較短的可見度逾時,讓您的程式碼有較長或較短的時間可以完全處理每個訊息。
下列程式碼範例使用 get_messages
方法,在一次呼叫中取得 16 個訊息。 接著其會使用 for
迴圈處理每個訊息。 它也會將可見度逾時設定為每個訊息五分鐘。
messages = queue_service.get_messages(queue_name, num_messages=16, visibility_timeout=5*60)
for message in messages:
print("Deleting message: " + message.content)
queue_service.delete_message(queue_name, message.id, message.pop_receipt)
刪除佇列
若要刪除佇列及其內含的所有訊息,請呼叫 delete_queue
方法。
print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)