Sledování asynchronních operací Azure

Některé operace Azure REST běží asynchronně, protože operaci nejde rychle dokončit. 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:

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

Tento stavový kód ale nemusí nutně znamenat, že operace je asynchronní. Asynchronní operace také vrátí hodnotu, provisioningState která označuje, že operace nebyla dokončena. Hodnota se může lišit podle operace, ale nebude obsahovat úspěch, neúspěšné nebo zrušené. Tyto tři hodnoty označují, že operace byla dokončena. Pokud se pro provisioningStatežádnou hodnotu nevrátí žádná hodnota, operace byla dokončena a úspěšná.

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

  • 200 (OK)
  • 204 (bez obsahu)

Odpovědi na operaci, kterou spouštíte, najdete v dokumentaci k rozhraní REST API .

Po získání kódu odpovědi 201 nebo 202 jste připraveni sledovat stav operace.

Adresa URL pro monitorování stavu

Existují dva různé způsoby monitorování stavu asynchronní operace. Správný přístup určíte prozkoumáním hodnot hlaviček vrácených z původního požadavku. Nejprve vyhledejte:

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

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

  • Location – Adresa URL pro určení, kdy se operace dokončila. Tuto hodnotu použijte jenom v případě, že se nevrátí Azure-AsyncOperation.
  • Retry-After – Počet sekund, které se mají počkat před kontrolou stavu asynchronní operace.

Azure-AsyncOperation žádost a odpověď

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

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

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

Následující příklad ukazuje další hodnoty, které by mohly 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 volitelné. Odpověď, kterou obdržíte, může vypadat jinak než v příkladu.

provisioningState values

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

  • Úspěšný
  • Neúspěšný
  • Zrušeno

Všechny ostatní hodnoty označují, že operace je stále spuštěná. Poskytovatel prostředků může vrátit přizpůsobenou hodnotu, která označuje její stav. Pokud je například žádost přijata a spuštěna, může se zobrazit akceptovaná .

Příklady požadavků a odpovědí

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

Tento příklad ukazuje, jak určit stav operace spuštění pro virtuální počítače. Počáteční požadavek 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, odešlete na adresu URL další požadavek.

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 Využitím Azure-AsyncOperation)

Tento příklad ukazuje, jak určit stav operace nasazení pro nasazení prostředků do Azure. Počáteční požadavek 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. Text odpovědi zahrnuje:

"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, odešlete na adresu URL další požadavek.

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 určit stav operace vytvoření pro účty úložiště. Počáteční požadavek 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

Tělo požadavku 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 až po zkontrolujte stav asynchronní operace odesláním dalšího požadavku na danou 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 požadavek stále spuštěný, obdržíte stavový kód 202. Pokud se žádost dokončila, obdržíte stavový kód 200. Text odpovědi obsahuje vlastnosti vytvořeného účtu úložiště.

Další kroky