Загрузка большого пакета заказов через HTTP-сервис обрывается по таймауту
Внешняя система раз в сутки присылает в 1С один POST-запрос с 50 000 строк заказов. Обработка выполняется прямо в обработчике HTTP-сервиса: документы создаются в цикле, в конце возвращается код 200.
На боевой базе запрос обрывается по таймауту веб-сервера. Отправитель считает загрузку неуспешной и повторяет её, хотя часть документов уже создана. Каждый повтор нагружает базу и создаёт новые дубли.
Как перестроить интеграцию?
- Увеличить таймауты веб-сервера и клиента: на более мощном оборудовании обработка укладывается в отведённое время
- Обернуть обработку всего пакета в одну транзакцию: при обрыве не создастся ничего и повтор будет безопасным
- Разбирать пакет на стороне отправителя и присылать по одному документу за запрос, синхронно дожидаясь ответа на каждый из них перед отправкой следующего
- Принимать пакет, сохранять его в очередь на стороне 1С, сразу отвечать отправителю и обрабатывать данные фоновым заданием, а статус отдавать отдельным запросом
