Стиль-трансфер диванов: как async API учит архитектурить
При работе с Replicate выяснил простую вещь: polling чужого API за результатом, это не просто цикл while. Взял фото дивана, юзер выбирает ткань, запускаю style-transfer. Replicate отвечает «задача в очереди», дает URL для статуса. Первая ошибка была логичной: synchronous wait в боте, зависает весь чат. Юзер либо теряет коннект, либо ждет с черным экраном.
Переделал на async: запрос идет в фон, бот сразу отвечает «визуализирую». Завел чистую очередь обработки (JSONL + file-lock), не доверяя памяти процесса. Polling каждые 2 секунды - не чаще (API throttle), не реже (юзер ждет 30+ сек). Когда результат готов, шлю готовую картинку в Telegram.
Главное: один цикл polling может упасть, но очередь жива. При рестарте бота подхватываю незавершенные задачи по ID Replicate - нет потерянных визуализаций.
Сейчас посты цепочки (Ozon, домены) будут на async-граблях. Оказалось, правильно затыкать async-проблемы нельзя - нужно их архитектурить с самого начала.
#n8n #автоматизация #asyncapi #replicate #polling #визуализация #разработка