Ограничьте параллельность
Используйте ограниченную очередь на стороне клиента и отправляйте каждую работу через обычный совместимый запрос. Так можно контролировать нагрузку без предположения о серверном batch-endpoint.
Пакетный режим сервиса — отдельный договор API: используйте его путь и тело только после публикации в настройках аккаунта или спецификации.
Client-controlled bounded parallelism
typescript
async function runWithLimit(items, limit, work) {
const results = [];
for (let offset = 0; offset < items.length; offset += limit) {
const group = items.slice(offset, offset + limit);
results.push(...await Promise.all(group.map(work)));
}
return results;
}Контроль очереди
- Делайте внутренний id задания детерминированным и уникальным в рамках запуска.
- Разбивайте слишком большой набор на управляемые группы.
- Отделяйте ошибки отдельных элементов от сбоя всей очереди.
Сбор результата
Сопоставляйте результат с внутренним id и сохраняйте статус каждой работы.
Не повторяйте автоматически все задания: повторяйте только временные сбои после проверки идемпотентности.