Быстрый ответ
Большинство изображений и видео, сгенерированных через APIYI (Veo 3.1, Sora, Nano Banana, gpt-image-2-vip и др.), возвращаются в виде URL, размещенных в глобальных CDN, таких как Cloudflare. Медленная загрузка или тайм-ауты при скачивании обычно вызваны одной из двух причин:- Сетевой маршрут от вашего сервера к CDN: на подключение серверов в материковом Китае к зарубежным CDN влияют трансграничная пропускная способность, маршрутизация провайдеров и локальный DNS
- Сторона хранилища: когда узлы хранения за CDN работают медленно, это может затронуть все маршруты
*.r2.cloudflarestorage.com или представляют собой собственный домен, проксируемый через Cloudflare. Скорость скачивания зависит от того, насколько эффективно ваш сервер может связаться с ближайшим граничным узлом Cloudflare.Запрос к API выполнен успешно, но изображение не скачивается?
Генерация изображений происходит в два этапа:- Ваша программа вызывает API APIYI, изображение генерируется и возвращается URL
- Ваша программа скачивает изображение по этому URL
- В логах APIYI запрос отмечен как успешный и тарифицирован — изображение действительно было сгенерировано
- Ваша программа сообщает об ошибках вида
Read timed outилиConnection reset, при этом хостом в ошибке является домен изображения, а неapi.apiyi.com Read timed outозначает, что соединение было установлено, но в течение длительного времени данные не поступали. Это не то же самое, что «не удается подключиться», и само по себе это не указывает, на чьей стороне произошел сбой
Распространенные причины
Трансграничная перегрузка
Неоптимальная маршрутизация ISP
Плохое разрешение DNS
Ограничения firewall / security group
HTTP/2 и повторное использование соединений
Однопоточная загрузка
Шаги по устранению неполадок
Определение исходящего IP-адреса и узла CDN
/cdn-cgi/trace позволяет одной командой узнать ваш исходящий IP-адрес и назначенный узел. Работает в Linux, macOS и командной строке Windows (cmd):ip= (исходящий IP), colo= (код узла, например HKG, SIN, LAX, FRA) и loc= (регион).- Нет вывода в течение 30 секунд: сервер вообще не может связаться с доменом — сосредоточьтесь на шагах 4 и 5
- Мгновенный вывод: с соединением всё в порядке, и проблема заключается в передаче данных — перейдите к шагу 3 для замера времени по фазам
Сравнение ноутбука и сервера
- На ноутбуке быстро, на сервере медленно: скорее всего, дело в сетевом маршруте сервера, но на стороне хранилища также может быть деградация для определенных маршрутов — отправьте нам оба результата
- Медленно везде: вероятнее всего, проблема на стороне хранилища — свяжитесь с нами, указав URL
Проверка базового сетевого подключения к CDN
ping, mtr, traceroute для проверки задержки и потери пакетов:curl -o /dev/null -m 60 -w "total=%{time_total} speed=%{speed_download}\n" "https://speed.cloudflare.com/__down?bytes=5000000"
(в Windows замените /dev/null на NUL). Если эта загрузка также идет медленно, проблема в исходящем канале сервера; если она быстрая, а медленно открывается только URL изображения, отправьте нам результаты.Потеря пакетов, задержка более 200 мс или маршруты, перенаправляемые через океан, указывают на проблемы на уровне канала связи.Измерение реальной скорости скачивания
curl для анализа временных показателей и пропускной способности:- Linux / macOS
- Windows cmd
-m 60 заставляет curl прерывать операцию через 60 секунд, выводя при этом временные показатели, благодаря чему команда никогда не зависает. Запустите ее снова с флагом -6 вместо -4: если зависает только один протокол, вы можете зафиксировать в своей программе рабочий протокол.Обратите внимание на следующие параметры:time_namelookup: время разрешения DNStime_connect: время TCP-соединенияtime_appconnect: завершение рукопожатия TLS; значение 0 означает сбой рукопожатияtime_starttransfer: время до первого байта (TTFB)size_download: количество фактически полученных байтов; 0 или очень малое значение указывает на то, что соединение установлено, но передача завислаspeed_download: средняя пропускная способность (байт/с)
Проверка разрешения DNS
Проверка самого сервера
- Облачная консоль: исчерпана ли квота трафика, не ограничена ли пропускная способность, нет ли задолженности на аккаунте
- Не занята ли вся полоса пропускания другим процессом (Windows: Диспетчер задач → Производительность → Ethernet; Linux:
iftop,nload) - Разрешают ли группы безопасности и файрволы порт 443 и диапазоны зарубежных IP-адресов; не изменялись ли недавно правила для исходящего трафика
- Не обращается ли программа через неработающий прокси: проверьте
HTTP_PROXY/HTTPS_PROXY, а в Windows такжеnetsh winhttp show proxy
Решения
Вариант 1: Переключение на публичный DNS (самый простой)
DNS по умолчанию на многих серверах разрешает адреса Cloudflare в удалённые узлы. Попробуйте следующие публичные DNS-серверы:Вариант 2: Оптимизация процесса скачивания
Параллельное скачивание
aria2c -x 8, Python asyncio + httpx), чтобы полностью утилизировать пропускную способность.Короткие таймауты и повторные попытки
Повторное использование соединений
httpx, requests.Session()), чтобы избежать повторных рукопожатий.Потоковая запись на диск
timeout=120. При зависании соединения вы впустую прождёте 120 секунд, и вся задача генерации будет помечена как неудачная — в результате уже сгенерированное и тарифицированное изображение будет потеряно.
Вариант 3: Переход в регион с более качественным подключением
Если ваш сценарий использования позволяет, выбирайте регионы с хорошей связностью с Cloudflare:Зарубежные регионы (рекомендуется)
Китай: премиум-ЦОД
Гонконг / Сингапур
Избегайте дешёвых VPS
Вариант 4: Ретрансляция через другой хост (крайняя мера)
Если ваш сервер действительно не может быстро связаться с Cloudflare, а сменить регион невозможно:- Используйте зарубежный сервер в качестве релея: сначала скачайте файл на зарубежный сервер, затем передайте его обратно по выделенному/премиальному каналу
- Ретрансляция через собственное объектное хранилище: зеркалируйте ресурс в собственное хранилище OSS / COS / S3 (например, в бакет в регионе Китая) и раздавайте оттуда
- Прогрев и кэширование: скачайте файл один раз на бэкенд и отдавайте последующие запросы из локального кэша
Частые вопросы
Почему с ноутбука всё быстро, а с сервера медленно?
Почему с ноутбука всё быстро, а с сервера медленно?
В ошибке указано, что не удается подключиться к api.apiyi.com, но в подробностях фигурирует домен изображений?
В ошибке указано, что не удается подключиться к api.apiyi.com, но в подробностях фигурирует домен изображений?
Я сменил DNS, но скорость по-прежнему низкая — почему?
Я сменил DNS, но скорость по-прежнему низкая — почему?
Заблокирован ли Cloudflare R2 в материковом Китае?
Заблокирован ли Cloudflare R2 в материковом Китае?
Скачивание видео постоянно обрывается — что делать?
Скачивание видео постоянно обрывается — что делать?
aria2c или wget -c, с разумными таймаутами и повторными попытками:Может ли APIYI возвращать Base64 вместо CDN URL?
Может ли APIYI возвращать Base64 вместо CDN URL?
Как проверить, что узким местом является моя сеть, а не CDN?
Как проверить, что узким местом является моя сеть, а не CDN?
curl с зарубежного сервера (AWS Токио, Сингапур и т. д.). Если там скорость высокая, а на вашем сервере низкая, значит, проблема в соединении между вашим сервером и Cloudflare, а не в самом CDN.Связанные документы
Настройка сетевого прокси
Где находятся серверы APIYI?
API генерации видео Veo
Связаться с поддержкой
- URL проблемного изображения и время его генерации (или ID запроса)
- Полный вывод
/cdn-cgi/trace(один с вашего ноутбука, один с сервера) - Вывод времени выполнения фаз
curl(один запуск с-4, один с-6) - Вывод
tracert/mtrи результат тестовой загрузки 5 МБ - Облачный провайдер и регион вашего сервера
- Приблизительное время начала проблемы с указанием часового пояса, например
21:23 (UTC+8)