Поделиться через


Плагин GenericRandomErrorPlugin

Завершается сбоем запросов со случайной выбранной ошибкой из файла, содержащего измеченные ошибки.

снимок экрана командной строки с прокси-сервером разработки, имитирующей одну из ошибок запроса OpenAI API, как определено в файле конфигурации.

Пример конфигурации

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.2.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/v2.2.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

Свойства конфигурации

Свойство Описание По умолчанию
errorsFile Путь к файлу, который содержит ответы на ошибки. Нет по умолчанию
rate Процент запросов на сбой со случайной ошибкой. Значение от 0 до 100. 50
retryAfterInSeconds Количество секунд, ожидающих повторных попыток запроса. Включен в заголовок ответа Retry-After для динамического регулирования. 5

Параметры командной строки

Имя Описание По умолчанию
-f, --failure-rate <failure rate> Процент запросов на сбой со случайной ошибкой. Значение от 0 до 100. 50

Замечания

Значения для ответа Retry-After

По умолчанию Retry-After заголовок использует глобальное retryAfterInSeconds значение. Это значение можно переопределить на основе каждого ответа с помощью @dynamic=N синтаксиса в файле ответов об ошибках, где N количество секунд, которое нужно ожидать перед повторным повтором.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.2.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."
            }
          }
        }
      ]
    }
  ]
}

В этом примере Retry-After заголовок использует 17 секунды для этого ответа независимо от глобального retryAfterInSeconds параметра. Значение увеличивается для каждого последующего регулирования запроса, как и с обычным @dynamic маркером.

Следующий шаг