Så här använder du Azure Queue Storage från Python

Översikt

Den här artikeln visar vanliga scenarier med hjälp av Azure Queue Storage tjänsten. Scenarierna som beskrivs är att infoga, granska, hämta och ta bort kömeddelanden. Kod för att skapa och ta bort köer omfattas också.

Exemplen i den här artikeln är skrivna i Python och använder Azure Queue Storage klientbibliotek för Python. Mer information om köer finns i avsnittet Nästa steg.

Vad är Queue Storage?

Azure Queue Storage är en tjänst för att lagra stora mängder meddelanden som kan nås från var som helst i världen via autentiserade anrop med HTTP eller HTTPS. Ett enda kömeddelande kan vara upp till 64 KB stort och en kö kan innehålla miljontals meddelanden, upp till den totala kapacitetsgränsen för ett lagringskonto. Queue Storage används ofta för att skapa en efter släpning av arbete som ska bearbetas asynkront.

Kötjänst begrepp

Azure-Kötjänst innehåller följande komponenter:

Azure Kötjänst-komponenter

  • Lagringskonto: All åtkomst till Azure Storage görs genom ett lagringskonto. Mer information om lagrings konton finns i Översikt över lagrings konto.

  • Kö: en kö innehåller en uppsättning meddelanden. Alla meddelanden måste vara i en kö. Observera att könamnet måste vara helt i gemener. Mer information om namngivning av köer finns i namngivning av köer och metadata.

  • Meddelande: ett meddelande i valfritt format, som är upp till 64 KB. Den maximala tid som ett meddelande kan finnas i kön är 7 dagar. För version 2017-07-29 eller senare kan den maximala tiden till Live vara ett positivt tal eller-1 som anger att meddelandet inte upphör att gälla. Om den här parametern utelämnas, är standardvärdet för Time-to-Live sju dagar.

  • URL-format: Köer är adresser bara med följande URL-format: http:// <storage account> . Queue.Core.Windows.net/<queue>

    Följande URL adresserar en kö i diagrammet:

    http://myaccount.queue.core.windows.net/incoming-orders

Skapa ett Azure Storage-konto

Det enklaste sättet att skapa ditt första Azure Storage-konto är att använda Azure Portal. Läs mer i Skapa ett lagringskonto.

Du kan också skapa ett Azure Storage-konto med Azure PowerShell, Azure CLI eller Azure Storage-resursprovidern för .NET.

Om du inte vill skapa ett lagrings konto i Azure just nu kan du också använda Azurite-emulatorn för att köra och testa din kod i en lokal miljö. Mer information finns i använda Azurite-emulatorn för lokal Azure Storage utveckling.

Ladda ned och installera Azure Storage SDK för Python

Sdk Azure Storage för Python kräver Python v2.7, v3.3 eller senare.

Installera via PyPI

Om du vill installera via Python Package Index (PyPI) skriver du:

pip install azure-storage-queue

Anteckning

Om du uppgraderar från Azure Storage SDK för Python v0.36 eller tidigare avinstallerar du den äldre SDK:n med hjälp av innan du pip uninstall azure-storage installerar det senaste paketet.

Alternativa installationsmetoder finns i Azure SDK för Python.

Kopiera dina autentiseringsuppgifter från Azure-portalen

När exempelprogrammet gör en begäran till Azure Storage måste det auktoriserats. Om du vill auktorisera en begäran lägger du till autentiseringsuppgifterna för ditt lagringskonto i programmet som en anslutningssträng. Följ dessa steg om du vill visa autentiseringsuppgifterna för ditt lagringskonto:

  1. Logga in på Azure-portalen.

  2. Leta rätt på ditt lagringskonto.

  3. I menyfönstret för lagringskontot går du till Säkerhet + nätverk och väljer Åtkomstnycklar. Här kan du visa kontoåtkomstnycklarna och den fullständiga anslutningssträngen för varje nyckel.

    Skärmbild som visar var inställningarna för åtkomstnyckeln finns i Azure Portal

  4. I fönstret Åtkomstnycklar väljer du Visa nycklar.

  5. Leta upp värdet för Anslutningssträng i avsnittet key1. Välj ikonen Kopiera till Urklipp för att kopiera anslutningssträngen. Du lägger till anslutningssträngens värde i en miljövariabel i nästa avsnitt.

    Skärmbild som visar hur man kopierar en anslutningssträng från Azure-portalen

Konfigurera anslutningssträngen för lagring

När du har kopierat anslutningssträngen skriver du den till en ny miljövariabel på den lokala dator som kör programmet. Konfigurera miljövariabeln genom att öppna ett konsolfönster och följa anvisningarna för ditt operativsystem. Ersätt <yourconnectionstring> med den faktiska anslutningssträngen.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

När du har lagt till miljövariabeln i Windows måste du starta en ny instans av kommandofönstret.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Starta om program

När du har lagt till miljövariabeln startar du om alla program som körs och behöver läsa miljövariabeln. Du kan till exempel starta om utvecklingsmiljön eller redigeringsredigeraren innan du fortsätter.

Konfigurera ditt program för att få åtkomst till Queue Storage

Med QueueClient -objektet kan du arbeta med en kö. Lägg till följande kod längst upp i en Python-fil där du vill komma åt en Azure-kö programmatiskt:

from azure.storage.queue import (
        QueueClient,
        BinaryBase64EncodePolicy,
        BinaryBase64DecodePolicy
)

import os, uuid

Paketet os har stöd för att hämta en miljövariabel. Paketet uuid har stöd för att generera en unik identifierare för ett könamn.

Skapa en kö

Anslutningssträngen hämtas från AZURE_STORAGE_CONNECTION_STRING miljövariabeln som angetts tidigare.

Följande kod skapar ett -objekt QueueClient med lagringsanslutningssträngen.

# 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
q_name = "queue-" + str(uuid.uuid4())

# Instantiate a QueueClient object which will
# be used to create and manipulate the queue
print("Creating queue: " + q_name)
queue_client = QueueClient.from_connection_string(connect_str, q_name)

# Create the queue
queue_client.create_queue()

Azure-kömeddelanden lagras som text. Om du vill lagra binära data måste du konfigurera Base64-kodning och avkodningsfunktioner innan du lägger ett meddelande i kön.

Konfigurera Base64-kodning och avkodningsfunktioner när du skapar klientobjektet.

# Setup Base64 encoding and decoding functions
base64_queue_client = QueueClient.from_connection_string(
                            conn_str=connect_str, queue_name=q_name,
                            message_encode_policy = BinaryBase64EncodePolicy(),
                            message_decode_policy = BinaryBase64DecodePolicy()
                        )

Infoga ett meddelande i en kö

Om du vill infoga ett meddelande i en kö använder du send_message metoden .

message = u"Hello World"
print("Adding message: " + message)
queue_client.send_message(message)

Granska meddelanden

Du kan granska meddelanden utan att ta bort dem från kön genom att anropa peek_messages metoden . Som standard granskar den här metoden ett enda meddelande.

# Peek at the first message
messages = queue_client.peek_messages()

for peeked_message in messages:
    print("Peeked message: " + peeked_message.content)

Ändra innehållet i ett meddelande i kön

Du kan ändra innehållet i ett meddelande direkt i kön. Om meddelandet representerar en uppgift kan du använda den här funktionen för att uppdatera aktivitetens status.

Följande kod använder metoden update_message för att uppdatera ett meddelande. Tidsgränsen för synlighet är inställd på 0, vilket innebär att meddelandet visas omedelbart och innehållet uppdateras.

messages = queue_client.receive_messages()
list_result = next(messages)

message = queue_client.update_message(
        list_result.id, list_result.pop_receipt,
        visibility_timeout=0, content=u'Hello World Again')

print("Updated message to: " + message.content)

Hämta kölängden

Du kan hämta en uppskattning av antalet meddelanden i en kö.

Metoden get_queue_properties returnerar köegenskaper inklusive approximate_message_count .

properties = queue_client.get_queue_properties()
count = properties.approximate_message_count
print("Message count: " + str(count))

Resultatet är bara ungefärligt eftersom meddelanden kan läggas till eller tas bort när tjänsten svarar på din begäran.

Ta bort meddelanden frånqueue

Ta bort ett meddelande från en kö i två steg. Om koden inte kan bearbeta ett meddelande ser den här tvåstegsprocessen till att du kan få samma meddelande och försöka igen. Anropa delete_message när meddelandet har bearbetats.

När du anropar receive_messagesfår du nästa meddelande i kön som standard. Ett meddelande som returneras receive_messages från blir osynligt för andra kodläsningsmeddelanden från den här kön. Som standard är det här meddelandet osynligt i 30 sekunder. För att slutföra borttagningen av meddelandet från kön måste du även anropa delete_message.

messages = queue_client.receive_messages()

for message in messages:
    print("Dequeueing message: " + message.content)
    queue_client.delete_message(message.id, message.pop_receipt)

Det finns två metoder som du kan använda för att anpassa meddelandehämtningen från en kö. För det första kan du hämta en grupp med meddelanden (upp till 32). För det andra kan du ange en längre eller kortare tidsgräns för osynlighet för att ge koden mer eller mindre tid att bearbeta klart varje meddelande.

I följande kodexempel används metoden receive_messages för att hämta meddelanden i batchar. Sedan bearbetar den varje meddelande i varje batch med hjälp av en kapslad for loop. Koden ställer också in tidsgränsen för osynlighet till fem minuter för varje meddelande.

messages = queue_client.receive_messages(messages_per_page=5, visibility_timeout=5*60)

for msg_batch in messages.by_page():
   for msg in msg_batch:
      print("Batch dequeue message: " + msg.content)
      queue_client.delete_message(msg)

Ta bort en kö

Om du vill ta bort en kö och alla meddelanden som finns i den anropar du delete_queue metoden .

print("Deleting queue: " + queue_client.queue_name)
queue_client.delete_queue()

Tips

Prova Microsoft Azure Lagringsutforskaren

Microsoft Azure Storage Explorer är en kostnadsfri, fristående app från Microsoft som gör det möjligt att arbeta visuellt med Azure Storage-data i Windows, macOS och Linux.

Nästa steg

Nu när du har lärt dig grunderna i Queue Storage kan du följa dessa länkar för att lära dig mer.