Bad End: попробуйте еще раз от последнего неудачного действия

KitKat21

Client
Регистрация
02.05.2017
Сообщения
263
Благодарностей
191
Баллы
43
Привет!

Я надеюсь, что кто-то может посоветовать.
У меня проблема.

В некоторые дни мой интернет отключается все время.
проекты терпят неудачу.

Есть ли способ сказать Zenno (с C #) в Bad End, чтобы вернуться к определенному действию (после получения идентификатора неудачного действия с C #). Так что бот может попробовать еще раз. Продолжить с последнего неудачного шага?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
по плохому сценарию это уже ветка выхода, даже если ее завернуть и ошибка не в подключении к интернету, а где-то на сайте, то так и будет гонять.

Можно попробовать вынести в общий код функцию проверки стабильности интернет соединения и если подключения нет, то например спать пока не появится.
Код:
public static bool CheckForInternetConnection()
{
    try
    {
        using (var client = new WebClient())
        using (client.OpenRead("http://clients3.google.com/generate_204"))
        {
            return true;
        }
    }
    catch
    {
        return false;
    }
}
 
  • Спасибо
Реакции: KitKat21

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
по плохому сценарию это уже ветка выхода, даже если ее завернуть и ошибка не в подключении к интернету, а где-то на сайте, то так и будет гонять.

Можно попробовать вынести в общий код функцию проверки стабильности интернет соединения и если подключения нет, то например спать пока не появится.
Код:
public static bool CheckForInternetConnection()
{
    try
    {
        using (var client = new WebClient())
        using (client.OpenRead("http://clients3.google.com/generate_204"))
        {
            return true;
        }
    }
    catch
    {
        return false;
    }
}
А как это будет работать примерно?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
  • Спасибо
Реакции: one

Rdenwer

Client
Регистрация
14.10.2010
Сообщения
254
Благодарностей
61
Баллы
28
Схема действий такова (Чисто теоретически)

Шаб сможет вернуться к определенному действию, если возможно будет так настроить оповещение, что оно будет писать в лог ошибку от конкретного действия и запишет в файл, например цифру 1.
При перезапуске шаб проверяет этот файл и через свитч начинает работу с того места, которое нужно (которому присвоена цифра 1)
 

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
А как это будет работать примерно?
По BAD если пошел выход, то это выход. В данном варианте не доводится до этого, проверяя подключения и возможно по блоку выбора заворачивая обратно.

Простейший пример во вложении.

В общем коде функция проверяет может скачать тестовый файл или нет и возвращает ответ true или false
В C# коде зная результат проводим действия

В примере просто через 2 секунды запрашивается проверка и не пропускает дальше, пока не подключится.

Кубики C# висят пока не будут выполнены, если через 30 минут нужно прекратить ждать, то нужно например добавить счетчик и по нему завершать выполнение.
 

Вложения

  • Спасибо
Реакции: KitKat21

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
По BAD если пошел выход, то это выход. В данном варианте не доводится до этого, проверяя подключения и возможно по блоку выбора заворачивая обратно.

Простейший пример во вложении.

В общем коде функция проверяет может скачать тестовый файл или нет и возвращает ответ true или false
В C# коде зная результат проводим действия

В примере просто через 2 секунды запрашивается проверка и не пропускает дальше, пока не подключится.

Кубики C# висят пока не будут выполнены, если через 30 минут нужно прекратить ждать, то нужно например добавить счетчик и по нему завершать выполнение.
Если бы это можно было как-то в фоне выполнять, а не после каждого действия чекать, то да :-)
 
  • Спасибо
Реакции: KitKat21

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
сли бы это можно было как-то в фоне выполнять, а не после каждого действия чекать, то да
AutoIt, SikuliX, AutomateIt ... и т.п. программы автоматизации могут проверять и останавливать выполнение нажимая кнопку стоп.

Зачем проверять после каждого действия тоже не понятно, получение данных не каждый экшен происходит, где происходит, там проверяем.

Критичное на C# переписать и вынести как самостоятельную программу с вызовом тоже не проблема.

Индивидуально решить всегда легче. А вот как по BAD вернуть в кольцо я не знаю, да и зачем возвращать тоже, всегда можно переписать без этого.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

KitKat21

Client
Регистрация
02.05.2017
Сообщения
263
Благодарностей
191
Баллы
43
Спасибо всем за ваши идеи и советы!

вот что я имел в виду:
Когда он выходит из строя, он проверяет, не была ли проблема загружена. Затем, если да, он получает последний идентификатор действия, ожидает или перезагружает страницу и затем продолжает с последнего идентификатора действия.
Невозможно?


(извините, пример на английском)
 

KitKat21

Client
Регистрация
02.05.2017
Сообщения
263
Благодарностей
191
Баллы
43
По BAD если пошел выход, то это выход. В данном варианте не доводится до этого, проверяя подключения и возможно по блоку выбора заворачивая обратно.

Простейший пример во вложении.

В общем коде функция проверяет может скачать тестовый файл или нет и возвращает ответ true или false
В C# коде зная результат проводим действия

В примере просто через 2 секунды запрашивается проверка и не пропускает дальше, пока не подключится.

Кубики C# висят пока не будут выполнены, если через 30 минут нужно прекратить ждать, то нужно например добавить счетчик и по нему завершать выполнение.
спасибо за пример кода! Может быть полезно при запуске проекта.
 

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