Condividi tramite


Simulare la limitazione delle richieste nelle API di Microsoft 365

In genere, il test del throttling è difficile perché si verifica raramente, quando i server Microsoft 365 sono sotto carico elevato. Usando il Dev Proxy, è possibile simulare le risposte di limitazione della larghezza di banda e verificare se l'applicazione le gestisce correttamente.

Per simulare la limitazione delle richieste nelle API di Microsoft 365, usare GraphRandomErrorPlugin e RetryAfterPlugin. Restituisce GraphRandomErrorPlugin le risposte di limitazione per le API di Microsoft 365. RetryAfterPlugin Verifica che l'app esegni come indicato dall'API.

Per iniziare, abilitare GraphRandomErrorPlugin e RetryAfterPlugin nel file di configurazione del proxy di sviluppo.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "graphRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://graph.microsoft.com/v1.0/*",
    "https://graph.microsoft.com/beta/*",
    "https://graph.microsoft.us/v1.0/*",
    "https://graph.microsoft.us/beta/*",
    "https://dod-graph.microsoft.us/v1.0/*",
    "https://dod-graph.microsoft.us/beta/*",
    "https://microsoftgraph.chinacloudapi.cn/v1.0/*",
    "https://microsoftgraph.chinacloudapi.cn/beta/*",
    "!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
    "https://*.sharepoint.*/*_api/*",
    "https://*.sharepoint.*/*_vti_bin/*",
    "https://*.sharepoint-df.*/*_api/*",
    "https://*.sharepoint-df.*/*_vti_bin/*"
  ]
}

Attenzione

Aggiungi RetryAfterPlugin prima di GraphRandomErrorPlugin nel file di configurazione. Se lo si aggiunge dopo, l'errore sarà generato da GraphRandomErrorPlugin prima che RetryAfterPlugin abbia la possibilità di gestirlo.

Configurare quindi il GraphRandomErrorPlugin per simulare gli errori di limitazione del traffico.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "graphRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://graph.microsoft.com/v1.0/*",
    "https://graph.microsoft.com/beta/*",
    "https://graph.microsoft.us/v1.0/*",
    "https://graph.microsoft.us/beta/*",
    "https://dod-graph.microsoft.us/v1.0/*",
    "https://dod-graph.microsoft.us/beta/*",
    "https://microsoftgraph.chinacloudapi.cn/v1.0/*",
    "https://microsoftgraph.chinacloudapi.cn/beta/*",
    "!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
    "https://*.sharepoint.*/*_api/*",
    "https://*.sharepoint.*/*_vti_bin/*",
    "https://*.sharepoint-df.*/*_api/*",
    "https://*.sharepoint-df.*/*_vti_bin/*"
  ],
  "graphRandomErrorPlugin": {
    "allowedErrors": [ 429 ]
  }
}

Avvia Dev Proxy con il tuo file di configurazione e testa la tua app per vedere come gestisce la limitazione.

Se l'applicazione riduce l'attività quando viene limitata, ma non attende il tempo specificato nelle richieste, viene visualizzato un messaggio simile a Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.

Questo messaggio indica che la tua applicazione non gestisce correttamente la limitazione e che inutilmente prolunga la limitazione. Per migliorare il modo in cui la tua app gestisce la limitazione, aggiorna il codice affinché attenda la quantità di tempo specificata nell'intestazione Retry-After prima di rifare la richiesta.