You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-05-18 09:51:28 +02:00
HTTP: Оптимизация chunked upload
This commit is contained in:
@@ -72,15 +72,9 @@
|
||||
ПараметрыЗадания.Добавить(НормализованныеНастройки);
|
||||
ПараметрыЗадания.Добавить(АдресРезультата);
|
||||
|
||||
Если OPI_Инструменты.ЭтоOneScript() Тогда
|
||||
//@skip-check bsl-legacy-check-expression-type
|
||||
Результат = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ВызватьСНастройкамиСлужебный", ПараметрыЗадания);
|
||||
Иначе
|
||||
|
||||
ФоновоеЗадание = ФоновыеЗадания.Выполнить("OPI_РасширенныйВызов.ВызватьСНастройкамиСлужебный", ПараметрыЗадания);
|
||||
Результат = Новый Структура("ФоновоеЗадание,Адрес", ФоновоеЗадание, АдресРезультата);
|
||||
|
||||
КонецЕсли;
|
||||
// !OInt Результат = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ВызватьСНастройкамиСлужебный", ПараметрыЗадания);
|
||||
ФоновоеЗадание = ФоновыеЗадания.Выполнить("OPI_РасширенныйВызов.ВызватьСНастройкамиСлужебный", ПараметрыЗадания); // !OPI
|
||||
Результат = Новый Структура("ФоновоеЗадание,Адрес", ФоновоеЗадание, АдресРезультата); // !OPI
|
||||
|
||||
Иначе
|
||||
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
Перем ЗапросФайлТела; // Путь к файлу с телом запроса
|
||||
Перем ЗапросПотокТела; // Поток тела запроса
|
||||
Перем ЗапросПотокЧтенияТела; // Поток чтения двоичных данных тела
|
||||
Перем ЗапросКонтрольЧтения; // Число байт тела, которые были успешно отправлены
|
||||
Перем ЗапросЗаписьДанных; // Запись данных тела запроса
|
||||
Перем ЗапросЧтениеДанных; // Чтение данных тела запроса
|
||||
Перем ЗапросТипДанных; // MIME тип для Content-Type
|
||||
@@ -147,13 +148,14 @@
|
||||
Инициализирован = Истина;
|
||||
Ошибка = Ложь;
|
||||
|
||||
ЗапросПараметрыURL = Новый Структура;
|
||||
ЗапросТело = Неопределено;
|
||||
ЗапросТелоКоллекция = Новый Структура;
|
||||
ЗапросЗаголовки = Новый Соответствие;
|
||||
ЗапросТаймаут = 3600;
|
||||
ЗапросРазмерЧасти = 5242880;
|
||||
Повторов = 0;
|
||||
ЗапросПараметрыURL = Новый Структура;
|
||||
ЗапросТело = Неопределено;
|
||||
ЗапросТелоКоллекция = Новый Структура;
|
||||
ЗапросЗаголовки = Новый Соответствие;
|
||||
ЗапросТаймаут = 3600;
|
||||
ЗапросРазмерЧасти = 5242880;
|
||||
ЗапросКонтрольЧтения = 0;
|
||||
Повторов = 0;
|
||||
|
||||
ЗапросТипУстановленВручную = Ложь;
|
||||
|
||||
@@ -1510,22 +1512,21 @@
|
||||
Повторов = 0;
|
||||
ОбщийРазмер = ЗапросТело.Размер();
|
||||
|
||||
ЗапросПотокТела = ЗапросТело.ОткрытьПотокДляЧтения();
|
||||
ЗапросЧтениеДанных = Новый ЧтениеДанных(ЗапросПотокТела);
|
||||
ЗапросКонтрольЧтения = 0;
|
||||
|
||||
КБайт = 1024;
|
||||
МБайт = КБайт * КБайт;
|
||||
|
||||
Пока ЗапросПотокТела.ТекущаяПозиция() < ОбщийРазмер Цикл
|
||||
Пока ЗапросКонтрольЧтения < ОбщийРазмер Цикл
|
||||
|
||||
ОтправитьЧасть(ЗапросПотокТела.ТекущаяПозиция(), РазмерЧасти, Метод);
|
||||
ОтправитьЧасть(ЗапросКонтрольЧтения, РазмерЧасти, Метод);
|
||||
Проверка = ПроверитьЗагрузкуЧасти();
|
||||
|
||||
Если Проверка <> Неопределено Тогда
|
||||
Возврат Проверка;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.ИнформацияОПрогрессе(ЗапросПотокТела.ТекущаяПозиция(), ОбщийРазмер, "МБ", МБайт);
|
||||
OPI_Инструменты.ИнформацияОПрогрессе(ЗапросКонтрольЧтения, ОбщийРазмер, "МБ", МБайт);
|
||||
|
||||
// !OInt ВыполнитьСборкуМусора();
|
||||
|
||||
@@ -1561,8 +1562,13 @@
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
|
||||
|
||||
ЗапросПотокЧтенияТела = ?(ЗапросПотокЧтенияТела = Неопределено, ЗапросТело.ОткрытьПотокДляЧтения(), ЗапросПотокЧтенияТела);
|
||||
ЗапросЧтениеДанных = ?(ЗапросЧтениеДанных = Неопределено, Новый ЧтениеДанных(ЗапросПотокЧтенияТела), ЗапросЧтениеДанных);
|
||||
ЗапросПотокЧтенияТела = ?(ЗапросПотокЧтенияТела = Неопределено
|
||||
, ЗапросТело.ОткрытьПотокДляЧтения()
|
||||
, ЗапросПотокЧтенияТела);
|
||||
|
||||
ЗапросЧтениеДанных = ?(ЗапросЧтениеДанных = Неопределено
|
||||
, Новый ЧтениеДанных(ЗапросПотокЧтенияТела)
|
||||
, ЗапросЧтениеДанных);
|
||||
|
||||
Если Не ЗапросПотокЧтенияТела.ТекущаяПозиция() = ПозицияНачала Тогда
|
||||
ЗапросПотокЧтенияТела.Перейти(ПозицияНачала, ПозицияВПотоке.Начало);
|
||||
@@ -2569,14 +2575,14 @@
|
||||
НеобходимоЧастей = 2;
|
||||
|
||||
Если МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
||||
ЗапросПотокЧтенияТела.Перейти(Число(МассивИнформации[1]) + 1 , ПозицияВПотоке.Начало);
|
||||
ЗапросКонтрольЧтения = Число(МассивИнформации[1]) + 1;
|
||||
Иначе
|
||||
ЗапросПотокЧтенияТела.Перейти(ЗапросТелоТекущейОтправки.Размер(), ПозицияВПотоке.Текущая);
|
||||
ЗапросКонтрольЧтения = ЗапросКонтрольЧтения + ЗапросТелоТекущейОтправки.Размер();
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ЗапросПотокЧтенияТела.Перейти(ЗапросТелоТекущейОтправки.Размер(), ПозицияВПотоке.Текущая);
|
||||
ЗапросКонтрольЧтения = ЗапросКонтрольЧтения + ЗапросТелоТекущейОтправки.Размер();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -3479,6 +3485,7 @@
|
||||
ЗапросФайлТела = Неопределено;
|
||||
ЗапросПотокТела = Неопределено;
|
||||
ЗапросПотокЧтенияТела = Неопределено;
|
||||
ЗапросКонтрольЧтения = Неопределено;
|
||||
ЗапросЗаписьДанных = Неопределено;
|
||||
ЗапросЧтениеДанных = Неопределено;
|
||||
ЗапросТипДанных = Неопределено;
|
||||
|
||||
Reference in New Issue
Block a user