GenericRandomErrorPlugin

Begäranden misslyckas med ett slumpmässigt valt fel från en fil som innehåller falska fel.

Skärmbild av en kommandotolk där Dev Proxy simulerar ett av felen för en OpenAI API-begäran enligt definitionen i konfigurationsfilen.

Konfigurationsexempel

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

Konfigurationsegenskaper

Egenskap Beskrivning Standard
errorsFile Sökväg till filen som innehåller felsvar. errors.json
rate Procentandelen begäranden om att misslyckas med ett slumpmässigt fel. Värde mellan 0 och 100. 50
retryAfterInSeconds Antalet sekunder att vänta innan du försöker begära igen. Ingår i Retry-After-svarsrubriken för dynamisk begränsning. 5

Kommandoradsalternativ

Namn Beskrivning Standard
-f, --failure-rate <failure rate> Procentandelen begäranden om att misslyckas med ett slumpmässigt fel. Värde mellan 0 och 100. 50

Anmärkningar

Svarsdel

Om du anger body egenskapen för ett felsvar till ett JSON-objekt eller en matris serialiserar Dev Proxy det till JSON. Om du ställer in den på en sträng skickar Dev Proxy strängen as-is, utan omgivande citattecken. En sträng som börjar med @ behandlas som en sökväg till en fil, i förhållande till felfilen, med svarstexten. Eftersom Dev Proxy som standard Content-Type anger rubriken till application/json, anger du rubriken så att den Content-Type matchar ditt innehåll när du returnerar icke-JSON-innehåll, till exempel text/plain.

Värden per svar Retry-After

Dev Proxy matchar @dynamic i Retry-After rubriken för statuskod, till exempel 429, 503eller 529. Den matchar rubriknamnet oavsett skiftläge. När den löser @dynamicregistrerar den även begäran med RetryAfterPlugin, som rapporterar begäranden som appen skickar innan Retry-After tiden är slut.

Som standard Retry-After använder huvudet det globala retryAfterInSeconds värdet. Du kan åsidosätta det här värdet per svar med hjälp av syntaxen @dynamic=N i felsvarsfilen, där N är antalet sekunder att vänta innan du försöker igen.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.errorsfile.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.openai.com/*"
      },
      "responses": [
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "Retry-After",
              "value": "@dynamic=17"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit exceeded. Wait 17 seconds."
            }
          }
        }
      ]
    }
  ]
}

I det här exemplet Retry-After använder 17 rubriken sekunder för det här svaret, oavsett den globala retryAfterInSeconds inställningen. Värdet ökar för varje efterföljande begränsad begäran, precis som med den oformaterade @dynamic token.

Standardrubrik Content-Type

Om ett felsvar har en body och inte definierar ett Content-Type huvud returnerar Dev Proxy svaret med Content-Type: application/json huvudet. Om du vill returnera en annan innehållstyp lägger du till Content-Type huvudet i svaret i felfilen. Dev Proxy använder det värde som du anger.

Nästa steg