5.9.5.1 Get | Post повторения при таймауте

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
Добрый день!
Из-за использования прокси или нестабильного канала возникают проблемы с выполнением запросов и как следствие таймауты.
Скажите можно ли как-то задать для запросов количество повторений при таймауте?
Нигде не нашел опции, если её еще не существует, то была бы крайне полезной для всех! Добавьте плз )
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Опции нет, сейчас можно разве что самому писать эти обработчики
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Добрый день!
Из-за использования прокси или нестабильного канала возникают проблемы с выполнением запросов и как следствие таймауты.
Скажите можно ли как-то задать для запросов количество повторений при таймауте?
Нигде не нашел опции, если её еще не существует, то была бы крайне полезной для всех! Добавьте плз )
при неудаче, повторить в цикле, сколько раз или до выполненного какого то действия
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Главное не делайте бесконечных циклов)
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
ГЕТ и ПОСТ и без прокси работает нестабильно. Очень часто может получиться так, что запрос вроди как сработал, но по факту в ответе пусто.
Всегда делаю цикл повторений на 5 с обязательной проверкой - есть ли в ответе вообще что либо, а потом уже проверяю что и то ли, что должно быть.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
ГЕТ и ПОСТ и без прокси работает нестабильно. Очень часто может получиться так, что запрос вроди как сработал, но по факту в ответе пусто.
Всегда делаю цикл повторений на 5 с обязательной проверкой - есть ли в ответе вообще что либо, а потом уже проверяю что и то ли, что должно быть.
а я о противоречу, никогда гет пост без прокси не подводит, проверка на пустоту стоит в каждом запросе, и проекты летают
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
а я о противоречу, никогда гет пост без прокси не подводит, проверка на пустоту стоит в каждом запросе, и проекты летают
Никогда не говори никогда :-)
Тут много факторов - что ты этими запросами делаешь, с какими сайтами работаешь, что туда отправляешь\пытаешься получить и т.д. и т.п.
И я не сказал, что это один сплошной глюк, который никогда не работает, а сказал, что часто бывают сбои и желательно добавлять проверку на наличие ответа.

Противоречить нужно с толком, а не просто ради самого противоречия ;-)
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
ГЕТ и ПОСТ и без прокси работает нестабильно. Очень часто может получиться так, что запрос вроди как сработал, но по факту в ответе пусто.
Всегда делаю цикл повторений на 5 с обязательной проверкой - есть ли в ответе вообще что либо, а потом уже проверяю что и то ли, что должно быть.
у меня такое постоянно тоже
особенно вк
 

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
вот-вот!
Просьба в экшн добавить хотябы "кол-во повторов при неудаче" очень-очень нужная опция.
 

rostonix

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

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
А с чего вы взяли что это неудача? Может сервак такой ответ отправил?
Насчет проверки содержимого вам правильно подсказали
О неудаче говорит неудачный исход. Неудача - не получилось выполнить запрос, то есть HttpRequest Failed - в таком случае опция "повтор при неудаче" позволит понять или экшн глюкнул или прокси сдох. 3-5 повторов достаточно.
А ответ на запрос всегда есть, только что может возвращать пустое значение если отправлен "вникуда" и ему не вернули ответ.

Бывает разовый глюк сети/драйверов/прокси/еще чего-либо при работе с Post/Get и если вручную еще раз сделать запрос - все проходит.
Для этих целей прошу внести таску, чтобы можно было указывать число попыток для данных экшнов.
И в таком случае, резонно сделать опцию "не перезаписывать значение переменной, если ответ пустой"
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
добавил в idea collector
 

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
добавил в idea collector
idea collector - это "реализуем в 2017м" ???
давайте как-то серьезнее. для меня это ОГРОМНАЯ проблема, думаю есть и др юзеры, которые скажут ОГРОМНОЕ спасибо.
Если эта фича требует нечеловеческих услий для реализации - то да, соглашусь и напилю костылей в проект. А если это реализуемо без скрипов, то Why Not??
я могу показать как выполняются пост и гет. при этом да прокси бывают разные, но ведь через браузер нет таких проблем. возникают вопросы...
ПС стоит ли ставить задержки перед серией запросов???
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Это реализуемо в проекте парой кликов - правый клик на экшене - повторить в цикле.
Это не огромная проблема на сегодняшний день, чтобы говорить о том что это стопорит работу.
ПС стоит ли ставить задержки перед серией запросов???
я не ставлю
 

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
Ну зачем, объясните, цикл если выполнилось успешно? а если экшнов 20-50 ? на каждый цикл на цикл цикл цикл цикл...
У меня часто проекты обламываются на таких вещах. Конечно можно сниппет выдумать и там сделать цикл, но увы в шарпе я так же как и в балете.
 

Oleg_M

Client
Регистрация
27.02.2015
Сообщения
72
Благодарностей
28
Баллы
18
Держи! Пихаешь код в с# кубик и используешь вместо стандартного POST.

Код:
var data = String.Empty; // Здесь вместо String.Empty свои данные для POST запроса

var resultPost = String.Empty;
int br = 0; //  переменная для выхода из цикла
do
{
    resultPost = ZennoPoster.HttpPost
        (
            "https://api.vk.com/method/wall.post.xml?", // тут урл для запроса
            data,
            "application/x-www-form-urlencoded",
            project.Variables["Proxy"].Value, // тут прокси
            "UTF-8",
            ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
            52000,
            String.Empty,
            project.Profile.UserAgent,
            true,
            5,
            AdditionalHeaders: new[] {"Referer: https://vk.com/feed"}, // тут реферер
            DownloadPath: project.Directory+@"\Trash" // путь куда будут качатся файлы, полученые при запросе
        );
    // условие выхода из цикла, если оно срабатывает выдаем исключение про плохой прокси
    br++;
    if (br == 21) // здесь задаем количество повторений запроса
    {
        project.SendErrorToLog("ERROR_API: Не возвращаются данные. Скорее всего у вас не рабочий прокси!!!", true);
        throw new Exception("");
        break;
    }
}
while (resultPost == String.Empty);
project.Variables["Имя переменной где будет результат POST запроса"].Value = resultPost;
 
Последнее редактирование:
  • Спасибо
Реакции: dremniy, bpunk и CSS

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Ну зачем, объясните, цикл если выполнилось успешно? а если экшнов 20-50 ? на каждый цикл на цикл цикл цикл цикл...
У меня часто проекты обламываются на таких вещах. Конечно можно сниппет выдумать и там сделать цикл, но увы в шарпе я так же как и в балете.
В цикл можно ходить только если экшен завершился с ошибкой, например
 
  • Спасибо
Реакции: CSS

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
В цикл можно ходить только если экшен завершился с ошибкой, например
Это да, но счетчик каждого такого цикла нужно сбрасывать еще, так как повторно если завернем туда, то сразу же выйдет по ошибке.
Отличная фича вышла бы, если бы все-таки реализовали, вместо того, чтобы городить велосипеды из экшнов :-)
 

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