Sledování asynchronních operací Azure

Některé operace REST v Azure běží asynchronně, protože operaci nelze dokončit rychle. Tento článek popisuje, jak sledovat stav asynchronních operací prostřednictvím hodnot vrácených v odpovědi.

Stavové kódy pro asynchronní operace

Asynchronní operace zpočátku vrátí stavový kód HTTP buď:

  • 201 (vytvořeno)
  • 202 (přijato)

Po úspěšném dokončení operace vrátí buď:

  • 200 (OK)
  • 204 (bez obsahu)

Odpovědi na operaci, kterou provádíte, najdete v dokumentaci k rozhraní REST API.

Po získání kódu odpovědi 201 nebo 202 můžete sledovat stav operace.

Adresa URL pro sledování stavu

Existují dva různé způsoby, jak sledovat stav asynchronní operace. Správný přístup určíte tak, že prověříte hodnoty záhlaví vrácené z původní žádosti. Nejdřív hledejte:

  • Azure-AsyncOperation - Adresa URL pro kontrolu průběžného stavu operace. Pokud operace vrátí tuto hodnotu, použijte ji ke sledování stavu operace.
  • Retry-After - Počet sekund čekání před kontrolou stavu asynchronní operace.

Pokud Azure-AsyncOperation není jedna z hodnot záhlaví, hledejte:

  • Location - Adresa URL pro určení, kdy byla operace dokončena. Tuto hodnotu používejte jenom v Azure-AsyncOperation není vrácena.
  • Retry-After - Počet sekund čekání před kontrolou stavu asynchronní operace.

Azure-AsyncOperation žádosti a odpovědi

Pokud máte adresu URL z hodnoty Azure-AsyncOperation záhlaví, pošlete na tuto adresu URL žádost GET. Pomocí hodnoty from Retry-After naplánujte, jak často chcete zkontrolovat stav. Zobrazí se objekt odpovědi, který označuje stav operace. Při kontrole stavu operace s adresou URL se vrátí jiná Location odpověď. Další informace o odpovědi z adresy URL umístění najdete v tématu Vytvoření účtu úložiště (202 sumístěním a opakováním) .

Vlastnosti odpovědi se můžou lišit, ale vždy zahrnují stav asynchronní operace.

{
    "status": "{status-value}"
}

Následující příklad ukazuje další hodnoty, které můžou být vráceny z operace:

{
    "id": "{resource path from GET operation}",
    "name": "{operation-id}",
    "status" : "Succeeded | Failed | Canceled | {resource provider values}",
    "startTime": "2017-01-06T20:56:36.002812+00:00",
    "endTime": "2017-01-06T20:56:56.002812+00:00",
    "percentComplete": {double between 0 and 100 },
    "properties": {
        /* Specific resource provider values for successful operations */
    },
    "error" : {
        "code": "{error code}",  
        "message": "{error description}"
    }
}

Objekt chyby se vrátí, když je stav Neúspěšný nebo Zrušený. Všechny ostatní hodnoty jsou nepovinné. Odpověď, kterou dostanete, může vypadat jinak než v příkladu.

provisioningState values

Operace, které vytvářejí, aktualizují nebo odstraňou zdroj (PUT, PATCH, DELETE), obvykle vracejí provisioningState hodnotu. Po dokončení operace se vrátí jedna z následujících tří hodnot:

  • Úspěšné
  • Nepodařilo se
  • Zrušeno

Všechny ostatní hodnoty označují, že operace pořád běží. Zprostředkovatel prostředků může vrátit přizpůsobenou hodnotu, která označuje jeho stav. Může se například zobrazit Akceptovat, když je žádost přijata a spuštěna.

Příklad žádostí a odpovědí

Spuštění virtuálního počítače (202 pomocí Azure-AsyncOperation)

Tento příklad ukazuje, jak zjistit stav operace spuštění virtuálních počítačů. Počáteční žádost je v následujícím formátu:

POST 
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2019-12-01

Vrátí stavový kód 202. Mezi hodnotami záhlaví vidíte:

Azure-AsyncOperation : https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01

Pokud chcete zkontrolovat stav asynchronní operace, pošlete na tuto adresu URL další žádost.

GET 
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/locations/{region}/operations/{operation-id}?api-version=2019-12-01

Text odpovědi obsahuje stav operace:

{
  "startTime": "2017-01-06T18:58:24.7596323+00:00",
  "status": "InProgress",
  "name": "9a062a88-e463-4697-bef2-fe039df73a02"
}

Nasazení prostředků (201 s Azure-AsyncOperation)

Tento příklad ukazuje, jak zjistit stav operace nasazení pro nasazení prostředků do Azure. Počáteční žádost je v následujícím formátu:

PUT
https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/microsoft.resources/deployments/{deployment-name}?api-version=2020-06-01

Vrátí stavový kód 201. Součástí odpovědi je:

"provisioningState":"Accepted",

Mezi hodnotami záhlaví vidíte:

Azure-AsyncOperation: https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Resources/deployments/{deployment-name}/operationStatuses/{operation-id}?api-version=2020-06-01

Pokud chcete zkontrolovat stav asynchronní operace, pošlete na tuto adresu URL další žádost.

GET 
https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Resources/deployments/{deployment-name}/operationStatuses/{operation-id}?api-version=2020-06-01

Text odpovědi obsahuje stav operace:

{
    "status": "Running"
}

Po dokončení nasazení odpověď obsahuje:

{
    "status": "Succeeded"
}

Vytvoření účtu úložiště (202 s umístěním a opakováním po)

Tento příklad ukazuje, jak zjistit stav operace vytvoření pro účty úložiště. Počáteční žádost je v následujícím formátu:

PUT
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}?api-version=2019-06-01

A text žádosti obsahuje vlastnosti účtu úložiště:

{
    "location": "South Central US",
    "properties": {},
    "sku": {
        "name": "Standard_LRS"
    },
    "kind": "Storage"
}

Vrátí stavový kód 202. Mezi hodnotami záhlaví vidíte následující dvě hodnoty:

Location: https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01
Retry-After: 17

Po čekání na počet sekund zadaných v části Opakovat po zkontrolujte stav asynchronní operace odesláním další žádosti na tuto adresu URL.

GET 
https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Storage/operations/{operation-id}?monitor=true&api-version=2019-06-01

Pokud je žádost pořád spuštěná, dostanete stavový kód 202. Pokud je žádost dokončená, dostanete kód stavu 200 a text odpovědi obsahuje vlastnosti účtu úložiště, který jste vytvořili.

Další kroky