> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Скрипт получает 502, но в журналах вызовов ничего нет?

> Ответ 502 с пустым телом и только заголовками Connection: close и Content-Length: 0 поступает от прокси-программного обеспечения на вашем устройстве, а не от APIYI. Настройте скрипт на обход системного прокси, чтобы устранить проблему.

## Симптомы

Пакетный скрипт (как правило, Windows + Python `requests`) периодически получает ответы 502, которые выводятся примерно так:

```text theme={null}
HTTP 502: {'_non_json_response': '', '_status_code': 502,
           '_headers': {'Connection': 'close', 'Content-Length': '0'}}
```

Вы также замечаете следующее:

* **Тело** ответа пустое, а **единственные** заголовки — `Connection` и `Content-Length`
* Веб-консоль продолжает работать всё это время
* Неудачные запросы **вообще не отображаются** в ваших [журналах вызовов](/ru/faq/call-logs)
* Скрипт повторяет попытки при 502, часто несколько раз подряд завершаясь неудачей, прежде чем одна попытка станет успешной, при этом задержка между попытками каждый раз увеличивается

## Краткий ответ

<Info>
  **Эта ошибка 502 исходит не от APIYI. Она генерируется прокси-программой на вашем компьютере (Clash, v2rayN и аналогичными инструментами).**

  Чтобы исправить это, настройте ваш скрипт на обход системного прокси. При использовании `requests` установите `session.trust_env = False`. Другие варианты описаны ниже.
</Info>

## Как определить, ваш ли это случай

Каждый уровень APIYI возвращает ответы с распознаваемыми признаками, и ни один из них не соответствует указанному выше пустому 502:

| Источник                                                  | Признаки ответа                                                                                           |
| --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Узлы доступа APIYI (nginx)                                | Всегда включают заголовки `Server` и `Date`; ошибки 5xx, сгенерированные узлами, также содержат HTML-тело |
| Шлюз APIYI                                                | JSON-тело ошибки с `error.message`                                                                        |
| Прокси-программа, которой не удалось перенаправить запрос | Пустое тело, обычно только с `Connection: close` и `Content-Length: 0`                                    |

Если ответ 502 имеет **нет заголовка `Server`, нет заголовка `Date` и пустое тело**, он почти наверняка получен от прокси-программы, а не от APIYI.

<Note>
  Платформа также может вернуть настоящий 502 при кратковременном перезапуске сервисного контейнера. В этом случае веб-консоль одновременно становится недоступной, сервис восстанавливается примерно в течение минуты, а ответ содержит полные заголовки и тело. См. [Веб-сайт или API возвращает 502](/ru/faq/website-502-error).
</Note>

## Почему подключается proxy

1. **Python `requests` автоматически использует системный proxy.** В Windows он считывает настройки системного proxy из реестра. Как только Clash, v2rayN или похожий инструмент включает «системный proxy», ваш скрипт незаметно направляет трафик через него, хотя в коде это никак не видно.
2. **proxy самостоятельно пересылает plain-HTTP-запросы.** При использовании plain-HTTP-адреса, такого как `http://api.apiyi.com:16888`, proxy не просто открывает прозрачный туннель, а повторно отправляет запрос от вашего имени. Когда узел proxy зависает, переключается или превышает время ожидания, proxy возвращает вашему скрипту пустой ответ 502.
3. **Большие тела запросов и высокая параллельность усугубляют проблему.** Редактирование изображения загружает несколько MB данных изображения, а одна генерация занимает от 45 до 70 секунд. Когда десятки параллельных запросов используют один узел proxy, любой сбой одновременно приводит к ошибке всей партии.

<Tip>
  При использовании `https://` proxy лишь открывает зашифрованный туннель, поэтому сбои обычно проявляются как ошибки соединения (например, `ProxyError`), а не как искусственно сформированный ответ 502. Тем не менее HTTPS-трафик всё равно проходит через proxy, поэтому фактическое решение по-прежнему состоит в том, чтобы исключить proxy из маршрута вашего скрипта.
</Tip>

## Исправление

<Steps>
  <Step title="Проверьте, использует ли ваш скрипт proxy">
    Выполните это в той же среде, что и ваш скрипт:

    ```python theme={null}
    import urllib.request
    print(urllib.request.getproxies())
    ```

    Если вывод содержит запись `http` или `https` (например, `127.0.0.1:7890`), `requests` по умолчанию направляет запросы через этот proxy.
  </Step>

  <Step title="Обойдите proxy (выберите один вариант)">
    <Tabs>
      <Tab title="requests">
        ```python theme={null}
        import requests

        session = requests.Session()
        session.trust_env = False   # ignore system and environment proxy settings

        resp = session.post(
            "https://api.apiyi.com/v1/images/edits",
            headers={"Authorization": "Bearer YOUR_API_KEY"},
            data={"model": "gpt-image-2-vip", "prompt": "...", "size": "1024x1536"},
            files=[("image[]", open("a.jpg", "rb"))],
            timeout=(10, 600),
        )
        ```

        Чтобы изменить только один запрос: `requests.post(..., proxies={"http": None, "https": None})`.
      </Tab>

      <Tab title="OpenAI SDK">
        ```python theme={null}
        import httpx
        from openai import OpenAI

        client = OpenAI(
            api_key="YOUR_API_KEY",
            base_url="https://api.apiyi.com/v1",
            http_client=httpx.Client(trust_env=False, timeout=600),
        )
        ```
      </Tab>

      <Tab title="Переменная окружения">
        Если вы предпочитаете не изменять код, задайте `NO_PROXY` перед запуском скрипта, чтобы домены APIYI обходили proxy:

        ```bash theme={null}
        # Windows PowerShell
        $env:NO_PROXY="api.apiyi.com,.apiyi.com"

        # macOS / Linux
        export NO_PROXY="api.apiyi.com,.apiyi.com"
        ```
      </Tab>

      <Tab title="ПО для proxy">
        В Clash, v2rayN или аналогичных инструментах добавьте правило DIRECT для `apiyi.com` или отключите «system proxy» во время выполнения пакетных задач.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Проверьте с небольшим пакетом запросов">
    Выполните несколько десятков запросов с 5-10 параллельными workers. Если пустые ответы 502 исчезли, причиной был proxy. APIYI доступен напрямую и не требует proxy; см. [Нужен ли proxy для использования API?](/ru/faq/network-proxy)
  </Step>
</Steps>

<Note>
  `http://api.apiyi.com:16888` — это официально предоставляемый plain-HTTP эндпоинт, который снижает задержку для задач генерации изображений (см. [Как уменьшить задержку Image API?](/ru/faq/image-api-network-latency-optimization)). **Вы можете продолжать его использовать**, если обходите proxy, как описано выше.
</Note>

## Часто задаваемые вопросы

<AccordionGroup>
  <Accordion title="Взимается ли плата за эти неудачные запросы?">
    Это зависит от того, на каком этапе произошёл сбой прокси:

    * Если прокси завершил работу **до того, как запрос достиг APIYI**, APIYI его не получил: плата не взимается и запись в журнале вызовов не создаётся.
    * Если прокси разорвал соединение **после отправки запроса, во время ожидания результата**, APIYI, возможно, уже генерирует изображение и тарифицирует его как обычно, однако результат не поступает в ваш скрипт.

    Поэтому не полагайтесь только на вывод ошибок вашего скрипта. Проверьте фактическое число тарифицированных вызовов в [журналах вызовов](/ru/faq/call-logs).
  </Accordion>

  <Accordion title="Почему запрос выполняется успешно после нескольких повторных попыток?">
    Сбои узлов прокси обычно кратковременны, поэтому повторная попытка, выполненная после восстановления узла, проходит успешно. Однако при каждой повторной попытке полное изображение загружается заново, а задержка между попытками каждый раз увеличивается, поэтому пакетные задания в целом выполняются значительно дольше. Обход прокси является фактическим решением проблемы.
  </Accordion>

  <Accordion title="Может ли APIYI исправить это на стороне сервера?">
    Нет. Сбой происходит в прокси между вашим компьютером и APIYI. Либо запрос вообще не достигает APIYI, либо прокси самостоятельно закрывает соединение, поэтому сервер ничего сделать не может.
  </Accordion>

  <Accordion title="Я всё ещё получаю 502 после обхода прокси. Что делать?">
    Сначала проверьте заголовки. Если ответ содержит `Server` и `Date` и имеет тело HTML или JSON, это 502 на стороне платформы; см. [Веб-сайт или API возвращает 502](/ru/faq/website-502-error). Если это продолжает происходить, отправьте в поддержку время сбоя (с указанием часового пояса, например `14:30 (UTC+8)`) и полный ответ.
  </Accordion>
</AccordionGroup>

## Связанные документы

<CardGroup cols={2}>
  <Card title="Сайт или API возвращает 502 — что делать?" icon="refresh-cw" href="/ru/faq/website-502-error">
    Ошибка 502 на стороне платформы: кратковременный перезапуск контейнера, восстановление примерно за минуту
  </Card>

  <Card title="Нужен ли прокси для использования API?" icon="wifi" href="/ru/faq/network-proxy">
    Прямое подключение работает; прокси или VPN не требуются
  </Card>

  <Card title="Как уменьшить задержку Image API?" icon="gauge" href="/ru/faq/image-api-network-latency-optimization">
    HTTP-эндпоинт, повторное использование соединений и настройки тайм-аута
  </Card>

  <Card title="Как избежать тайм-аутов API?" icon="timer" href="/ru/faq/timeout-configuration">
    Настройки тайм-аута и поэтапная диагностика
  </Card>
</CardGroup>
