GenericRandomErrorPlugin

Se produce un error seleccionado aleatoriamente del archivo que contiene errores ficticios.

Captura de pantalla de un símbolo del sistema con el proxy de desarrollo simulando uno de los errores de una solicitud de API de OpenAI tal como se define en el archivo de configuración.

Ejemplo de configuración

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

Propiedades de configuración

Propiedad Descripción Predeterminado
errorsFile Ruta de acceso al archivo que contiene respuestas de error. errors.json
rate Porcentaje de solicitudes que se producirá un error aleatorio. Valor entre 0 y 100. 50
retryAfterInSeconds Número de segundos que se deben esperar antes de volver a intentar la solicitud. Incluido en el encabezado de respuesta Retry-After para la limitación dinámica. 5

Opciones de línea de comandos

Nombre Descripción Predeterminado
-f, --failure-rate <failure rate> Porcentaje de solicitudes que se producirá un error aleatorio. Valor entre 0 y 100. 50

Observaciones

Cuerpo de respuesta

Si establece la body propiedad de una respuesta de error en un objeto o matriz JSON, el proxy de desarrollo lo serializa en JSON. Si lo establece en una cadena, Dev Proxy envía la cadena as-is, sin comillas circundantes. Una cadena que comienza con @ se trata como una ruta de acceso a un archivo, en relación con el archivo de errores, con el cuerpo de la respuesta. Dado que dev Proxy establece el Content-Type encabezado application/jsoncomo predeterminado , establezca el encabezado para que coincida con el Content-Type contenido al devolver contenido que no es JSON, por ejemplo text/plain.

Valores por respuesta Retry-After

El proxy de desarrollo se @dynamic resuelve en el Retry-After encabezado de cualquier código de estado, como 429, 503o 529. Coincide con el nombre del encabezado independientemente del caso. Cuando resuelve @dynamic, también registra la solicitud con RetryAfterPlugin, que informa de las solicitudes que envía la aplicación antes de Retry-After que el tiempo esté activa.

De forma predeterminada, el Retry-After encabezado usa el valor global retryAfterInSeconds . Puede invalidar este valor por respuesta mediante la @dynamic=N sintaxis del archivo de respuestas de error, donde N es el número de segundos que se deben esperar antes de volver a intentarlo.

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

En este ejemplo, el Retry-After encabezado usa 17 segundos para esta respuesta, independientemente de la configuración global retryAfterInSeconds . El valor se incrementa en cada solicitud limitada posterior, como con el token sin @dynamic formato.

Encabezado predeterminado Content-Type

Si una respuesta de error tiene body y no define un Content-Type encabezado, Dev Proxy devuelve la respuesta con el Content-Type: application/json encabezado . Para devolver un tipo de contenido diferente, agregue el Content-Type encabezado a la respuesta en el archivo de errores. El proxy de desarrollo usa el valor que especifique.

Paso siguiente