GenericRandomErrorPlugin

Schlägt Anforderungen mit einem zufällig ausgewählten Fehler aus der Datei mit simulierten Fehlern fehl.

Screenshot einer Eingabeaufforderung mit dem Dev-Proxy, der einen der Fehler für eine OpenAI-API-Anforderung simuliert, wie in der Konfigurationsdatei definiert.

Konfigurationsbeispiel

{
  "$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"
  }
}

Konfigurationseigenschaften

Eigentum Beschreibung Vorgabe
errorsFile Pfad zur Datei, die Fehlerantworten enthält. errors.json
rate Der Prozentsatz der Anforderungen, die mit einem zufälligen Fehler fehlschlagen sollen. Wert zwischen 0 und 100. 50
retryAfterInSeconds Die Anzahl der Sekunden, die gewartet werden sollen, bevor die Anforderung erneut versucht wird. Im Retry-After Antwortheader für die dynamische Drosselung enthalten. 5

Befehlszeilenoptionen

Name Beschreibung Vorgabe
-f, --failure-rate <failure rate> Der Prozentsatz der Anforderungen, die mit einem zufälligen Fehler fehlschlagen sollen. Wert zwischen 0 und 100. 50

Bemerkungen

Antwortkörper

Wenn Sie die body Eigenschaft einer Fehlerantwort auf ein JSON-Objekt oder array festlegen, serialisiert Dev Proxy sie in JSON. Wenn Sie die Zeichenfolge auf eine Zeichenfolge festlegen, sendet Dev Proxy die Zeichenfolge as-isohne umgebende Anführungszeichen. Eine Zeichenfolge, die beginnt @ , wird als Pfad zu einer Datei im Verhältnis zur Fehlerdatei mit dem Antworttext behandelt. Da Dev Proxy standardmäßig den Header application/jsonangibt, legen Sie den Content-TypeContent-Type Header so fest, dass er Mit Ihren Inhalten übereinstimmt, wenn Sie ztext/plain. B. nicht-JSON-Inhalte zurückgeben.

Werte pro Antwort Retry-After

Dev Proxy wird @dynamic im Header für jeden Statuscode aufgelöst, z429. B. , oder 503529.Retry-After Sie entspricht dem Kopfzeilennamen unabhängig von der Groß-/Kleinschreibung. Wenn sie aufgelöst wird @dynamic, registriert sie auch die Anforderung mit dem RetryAfterPlugin, das Anforderungen meldet, die Ihre App sendet, bevor die Retry-After Zeit aufnimmt.

Standardmäßig verwendet der Retry-After Header den globalen retryAfterInSeconds Wert. Sie können diesen Wert pro Antwort mithilfe der Syntax in der @dynamic=N Fehlerantwortdatei außer Kraft setzen. Dabei handelt es sich um die Anzahl der Sekunden, N die vor dem erneuten Wiederholen gewartet werden sollen.

{
  "$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."
            }
          }
        }
      ]
    }
  ]
}

In diesem Beispiel verwendet Retry-After der 17 Header Sekunden für diese Antwort, unabhängig von der globalen retryAfterInSeconds Einstellung. Der Wert erhöht sich für jede nachfolgende gedrosselte Anforderung, wie bei dem einfachen @dynamic Token.

Standardheader Content-Type

Wenn eine Fehlerantwort über einen body Header verfügt und nicht definiert Content-Type wird, gibt Dev Proxy die Antwort mit dem Content-Type: application/json Header zurück. Um einen anderen Inhaltstyp zurückzugeben, fügen Sie der Antwort in der Fehlerdatei den Content-Type Header hinzu. Dev Proxy verwendet den von Ihnen angegebenen Wert.

Nächster Schritt