Использование POST запроса в зенно для скачивания файла

progr

Пользователь
Регистрация
28.08.2014
Сообщения
77
Благодарностей
6
Баллы
8
Есть задача скачать архив с файлами большого размера (порядка 200мб) в зено
затем его распаковать и обработать

Использую для этого кубик POST-запрос


Но если файл большой, то этот кубик не выполняется и идет на красную линию
Увеличение таймаута не помогает.
Причем в итоге сам файл скачивается но почему то идет на красную линию
При маленьком размере файла система скачивает файл и идет по зеленой ветке.
Как побороть?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
А в лог ничего не пишет?

Как вариант, по красной стрелке проверять размер файла, и если он большой, то отправлять управление дальше туда же, куда зелёная вела.
 

progr

Пользователь
Регистрация
28.08.2014
Сообщения
77
Благодарностей
6
Баллы
8
В лог не пише почему то ничего.
Думал тоже красную ветку завернуть туда же на проверку существования файла.
Но это как бы костыль.
Может кто подскажет правильное решение.
Интуитивно мне кажется что тут проблема в количестве памяти на инстанс.
Скорее всего ПОСТ-кубик считывает ответ сервера в память и только потом сохраняет на диск.
Хотя в таком случае файл должен был быть поврежден, а он нормальный.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Наверное, в nonCriticalErrors.txt какой-нибудь необработанный Exception зафиксирован, в общем баг...
Там в настройках есть ещё какой-то параметр с объёмом памяти, можно с ним поиграть — но аккуратно, он резко увеличивает запросы к памяти каждого потока!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Таймаут побольше не пробовали поставить?
 

progr

Пользователь
Регистрация
28.08.2014
Сообщения
77
Благодарностей
6
Баллы
8
Таймаут пробовал увеличивать
Там в топике написано.
Решение реализовал с помощью С# кода.
Помогло даже на более бОльших файлах чем мне нужно (провел тесты).
Правда пришлось от пост перейти к гет.

Код:
string Url = project.Variables["ConfigUrlAdminka"].Value;
string DataUrl = "securekey=" + project.Variables["ConfigSECUREKEY"].Value + "&getAttachForLetter=true&ZennoID=" + project.Variables["ZennoID"].Value;

string filename = project.Variables["DIR_DOWNLOADED"].Value + "\\" + project.Variables["ZIP_LETTERATTACMENT"].Value;
WebClient myWebClient = new WebClient();
string myStringWebResource = Url + "?" + DataUrl;
myWebClient.DownloadFile(myStringWebResource, filename);
И опять же возник вопрос ситема перестала уходить на красную ветку. Но при мониторинге самого скачиваемого файла видно что буфер не скидывается в процессе загрузки.
И файл сначала нулевой длинны, а потом сразу полный размер.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
нужен пример реальный для тестов
 

progr

Пользователь
Регистрация
28.08.2014
Сообщения
77
Благодарностей
6
Баллы
8
нужен пример реальный для тестов
Так а этот пример чем не реальный?
По сути можно создать проект из нескольких кубиков без всякой инициализации переменных
Главный кубик - ПОСТ запрос на скачивание файла порядка 200мб с какого нибудь урла
и посмотреть что он выдаст
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
для этих целей лучше aria2c или wget использовать.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Так а этот пример чем не реальный?
По сути можно создать проект из нескольких кубиков без всякой инициализации переменных
Главный кубик - ПОСТ запрос на скачивание файла порядка 200мб с какого нибудь урла
и посмотреть что он выдаст
приложите проект с таймаутом который используете и конкткретным файлом для скачивания
протестировали, проблем не выявили
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)