DEV Community на русском
Подписаться
Правильный способ обработки тайм-аутов API ИИ в Laravel
Синхронная интеграция сторонних API искусственного интеллекта или LLM в веб-контроллерах является архитектурной ошибкой, ведущей к быстрому исчерпанию памяти при медленных ответах. Для смягчения этой проблемы внешние операции должны быть перенесены в изолированные, асинхронные фоновые процессы. Настройка Laravel Job предоставляет готовое к эксплуатации решение для безопасной обработки задержек внешних API.Это включает создание задания, такого как ProcessAIPipeline, которое реализует ShouldQueue и использует трейты для отправки, взаимодействия и постановки в очередь. Определяются критические настройки повторных попыток, такие как $tries и $backoff, для корректной обработки тайм-аутов внешних API. Конструктор передает необходимые данные, такие как запрос, в задание.Метод handle выполняет обработку вне основного потока, защищая основную логику приложения, вызывая AIEngineService для генерации ответа. Такой изолированный подход предлагает несколько ключевых архитектурных преимуществ.Во-первых, он обеспечивает немедленное освобождение клиента, позволяя контроллеру отправить задание и мгновенно вернуть статус HTTP 202 Accepted. Во-вторых, встроенная защита экспоненциального отката обрабатывает ограничения скорости или простои, выполняя повторные попытки.Это предотвращает необработанные ошибки 500 и повышает отказоустойчивость системы. В-третьих, это обеспечивает изолированную расширяемость, облегчая упаковку реализации в многоразовые, открытые инструменты от поставщиков.В конечном итоге, создание изолированных конвейеров защищает инфраструктуру от тайм-аутов соединений и обеспечивает высокую отказоустойчивость основной экосистемы. Автор, инженер-программист и специалист по данным с более чем 9-летним опытом, специализируется на системах Laravel с высокой степенью параллелизма и разработке открытых утилит.