Помогите с логикой.



  • alt text\

    В общем поток с медленным прокси загружает страницу в браузере. По ошибке таймаута (60 сек) он входит в блок WAS ERROR, а дальше меткой возвращаеться в начало. Однако 2-ые, 3-ьи и последующие попытки не пытаются загрузить страницу по таймауту в 60 сек. Действие сразу сбрасывается в ошибку.



  • @fastspace
    WAS ERROR можно добавлять в if без "true" т.к. он в себе уже содержит true или false
    Возможно дело в проксях, они сразу сбрасывают соединение...



  • @uraabk У меня прокси из 11 магазинов. На всех такая байда. Даже быстрые прокси этим грешат.



  • @fastspace said in Помогите с логикой.:

    alt text\

    В общем поток с медленным прокси загружает страницу в браузере. По ошибке таймаута (60 сек) он входит в блок WAS ERROR, а дальше меткой возвращаеться в начало. Однако 2-ые, 3-ьи и последующие попытки не пытаются загрузить страницу по таймауту в 60 сек. Действие сразу сбрасывается в ошибку.

    Воздержитесь от использования меток и игнорирования ошибок. Поставьте ресурсу с прокси 1 неудачу в параметрах и запускайте скрипт в многопотоке.



  • @xclsv У меня каждый аккаунт имеет свой прокси (привязка). Нет отдельно ресурса "Прокси".
    Нужно как-то по ошибке таймаута повторно загрузить страницу. Да метки глючат - факт, но как тогда не завершая потока мне снова загрузить страницу?



  • @fastspace said in Помогите с логикой.:

    как тогда не завершая потока мне снова загрузить страницу?

    Используйте рекурсию.
    Создайте функцию. В ее теле:

    1. Загрузите страницу.
    2. Оберните действие загрузки в игнорирование ошибок.
    3. В случае ошибки, вызовите эту функцию прямо внутри ее самой.

    P.S. Если прокси умер окончательно, получите бесконечный цикл, как и в случае с меткой. Подумайте, как это обработать.

    P.S.S. Когда-то для этих целей я использовал бесконечный цикл while. Даже он надежнее меток.



  • @xclsv Спасибо попробую.
    Там стоит лимит попыток в 5. Переменная FRIENDS. Если прокси умер окончательно, то поток завершиться.



  • @fastspace said in Помогите с логикой.:

    @xclsv Спасибо попробую.
    Там стоит лимит попыток в 5. Переменная FRIENDS. Если прокси умер окончательно, то поток завершиться.

    То же самое можно использовать в рекурсии.



  • @xclsv Через вызов функции стало получше, но всю равно не работает как положено. Сначала поток по ошибке в таймаут уходит, затем вызывает фукнцию и ТЕПЕРЬ не дожидаясь окончательно загрузки страницы сразу пропускает блок WAS ERROR типо страница уже была загружена. Ситуация ровно наоборот. Раньше он сразу в ошибку кидал. Теперь сразу кидает типо нет ошибки.



  • @fastspace said in Помогите с логикой.:

    @xclsv Через вызов функции стало получше, но всю равно не работает как положено. Сначала поток по ошибке в таймаут уходит, затем вызывает фукнцию и ТЕПЕРЬ не дожидаясь окончательно загрузки страницы сразу пропускает блок WAS ERROR типо страница уже была загружена.

    Я не могу знать, как положено.
    Установите ожидание полной загрузки страницы или ожидание элемента.
    Если это уже сделано - киньте скрин конструкции и скрин настроек загрузки страницы.



  • @xclsv said in Помогите с логикой.:

    @fastspace said in Помогите с логикой.:

    @xclsv Через вызов функции стало получше, но всю равно не работает как положено. Сначала поток по ошибке в таймаут уходит, затем вызывает фукнцию и ТЕПЕРЬ не дожидаясь окончательно загрузки страницы сразу пропускает блок WAS ERROR типо страница уже была загружена.

    Я не могу знать, как положено.
    Установите ожидание полной загрузки страницы или ожидание элемента.
    Если это уже сделано - киньте скрин конструкции и скрин настроек загрузки страницы.

    Всё уже стоит уже давно. Поставил ради интереса 65 секунд. При повторной попытке зайти на сайт (после вызова функции) поток не ждет 65 секунд таймаута, сразу кидает в блок TRUE спустя 3-5 секунд ожидания действия загрузить.

    alt text



  • @fastspace
    Скрин потрохов функции ещё.





  • @fastspace
    Уберите " == true"
    Как определили, что страница не полностью загрузилась?
    Что хранится в переменной LAST_ERROR перед повторным вызовом функции?



  • @xclsv Я же не даун. Элементы страницы не все видны, видно дальше анимацию прогрузки страницы.
    Итого:
    1)Через метку при повторной попытке загрузить сразу ошибка.
    2)Через функцию при повторной загрузке сразу нет ошибки и скрипт бежит дальше, но страница еще грузиться.
    убрал true не помогло.



  • @xclsv

    Что хранится в переменной LAST_ERROR перед повторным вызовом функции?

    Ничего там нет, она пуста перед повторным вызовом.



  • @fastspace said in Помогите с логикой.:

    Я же не даун

    Не следует тут такое писать. Никто не знает ваш уровень.

    У меня такая конструкция работает. Баг не в басе, а в конкретном скрипте. Кидайте сюда или в ЛС. Иначе не смогу помочь.



  • @xclsv Работает если дефолт поставить ожидание, без дефолта не работает.



  • @Fox
    Подскажи нам, плз, как взаимодействуют дефолт и ожидание полной загрузки страницы.



  • @xclsv said in Помогите с логикой.:

    @Fox
    Подскажи нам, плз, как взаимодействуют дефолт и ожидание полной загрузки страницы.

    В BAS есть два вида таймаута, общий:
    0_1542200665622_4b005515-92b6-48a3-8bb2-91174852d482-изображение.png
    он действует на все экшены.
    И индивидуальный:
    0_1542200746421_882d4e7a-8aeb-4555-9d48-106236cf5c4f-изображение.png

    Я бы посоветовал установить общий таймаут на 3200000 и попробовать выполнить алгоритм совсем без прокси.


Log in to reply