Закрытие потока после выполнения задачи.



  • @kibec Но в твоем случае, если брать ресурсы не вручную, то он не будет выбивать ошибку и прерывать скрипт, а дождется, пока остальные потоки не завершатся . Но в конце все равно прервется все ошибкой, что закончились ресурсы



  • @kibec Или поможет .... я вобщем вопрос не до конца понял, поэкспериментируй, пусть лучше support ответит ))))



  • Как сделать что бы !поток! заканчивался (финально, а не заново перезапускался), то есть было 10, стало 9.


  • administrators

    @lev Экшн "Прервать поток" называется fail

    @kibec Стало 9, а не 10 чего?



  • @support Хм, он именно прерывается, то есть было 5 потоков, а будет 4? Я просто до этого момента думал, что fail просто добавляет количество неудач .....


  • administrators

    @kibec Зачем ограничивать количество успехов в 10?
    Скрипт автоматом завершится когда закончатся строки


  • administrators

    Софт работает так:

    Запускается заданное количество потоков.
    Если один поток завершается с ошибкой - он тут же перезапускается и увеличивает количество ошибок.
    Тоже самое происходит с успехом.

    Скрипт завершается при одном из 4 условий -

    • Достигнуто макс количество успехов.
    • Макс количество неудач.
    • Использованы все ресурсы.
    • Вызвано "Прервать Скрипт"

    Действие Fail завершит поток с ошибкой и он будет тут же перезапущен.
    Исходя из этого можно реализовать практически любую логику



  • @support Ну вот я подразумевал, что Прервать поток - прерывает его и не запускает новый. Как то пару месяцев назад мы говорили на эту тему, когда у меня была задача взять сразу несколько строк из ресурсов одним потоком, и была проблема. Не всегда можно предсказать сколько fail и success будет в скрипте. С таким экшном было бы больше возможностей с ручным управлением ресурсами в многопотоке. Можно вручную всегда проверить сколько строк в ресурсе и если там 0 - то прервать поток и не перезапускать ...



  • @support И ни всегда красиво, когда приложение завершается ошибкой, что закончились ресурсы, с Прервать поток это можно отслеживать в самом скрипте. Но если это трудно реализуемо, то впринципе, я пользуюсь вашим решением, когда потоки не прерываются, а спят и ждут потока, который при определенном условии, через экшн Прервать скрипт, завершает приложение...



  • @support И вот если например выставить количество успехов в 10, и один из потоков достигнет этого количества успехов, то все потоки ведь разом прервутся? Соответственно, будут потеряны ресурсы, так как часть потоков уже возьмет часть аккаунтов, а в сложных шаблонах и где-нибудь их задействует ...


  • administrators

    @lev

    Не всегда можно предсказать сколько fail и success будет в скрипте.
    И вот если например выставить количество успехов в 10, и один из потоков достигнет этого количества успехов, то все потоки ведь разом прервутся?

    А почему не выставить количество успехов в большое число и не угадывать?


  • administrators

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



  • @support у меня пока 2 причины, где мне бы был полезен этот экшн "Прервать поток". 1 - ручное управление ресурсами (самому взять, записать, удалить). Без этого экшна все ручное управление ресурсами имеет смысл только в однопотоке. 2 - Завершать скрипт записью в лог, что все ок, а не стандартной красной фразой, что слишком много ошибок и ресурсы закончились.


  • administrators

    Если работаете со списком аккаунтом предлагаю такой сетап.
    Успехи, неудачи в 10000
    Потоки задает юзер.
    Завершение по исчерпанию ресурса.

    По сравнению с подходом предложенным в теме есть несколько преимуществ
    Можно динамически менять число потоков.
    Не нужно самостоятельно выставлять число успехов/неудач.


  • administrators

    @lev А как в этом поможет экшн который завершает поток и не дает ему восстановиться?
    Чем этот экшн будет отличаться от бесконечного сна?



  • @support От бесконечного сна ничем ни отличается, кроме того, что не тратятся ресурсы на паузу, ну и логика сложнее, так как надо вычислить последний поток, иначе они все в бесконечный сон уйдут )



  • Вот, программа полностью выключится, когда в файле аккаунтов станет пусто. Полностью, даже если неудач будет 100к, то получение аккаунта, у меня в скрипте идёт первое, то есть там буквально за 15-20 минут вырубается.

    !Но при этом если предыдущие потоки не закончили свою работу, то вся программа - всё равно останавливается. Вот по этому и интересует момент не перезапуска потока, а именно отключение как бы.

    Насчёт "вечного сна" - о такой реализации уже подумал, но ведь при этом у нас получается лишний открытый браузер и т.д



  • @support Но впринципе, возможно это только мои заморочки, ладно, я делаю через бесконечный сон где мне нужно ...



  • @support said in Закрытие потока после выполнения задачи.:

    Скрипт завершается при одном из 4 условий -

    Достигнуто макс количество успехов.
    Макс количество неудач.
    Использованы все ресурсы.
    Вызвано "Прервать Скрипт"

    Тут именно идёт завершение скрипта, и он заново начинает с нуля, если успех или ошибок хватает. А наша цель, что бы он отработал - и больше не перезапускался, а остальные потоки, которые еще не закончили своё дело - продолжили работать полноценно.
    Большой лимит ошибок - не спасает, так как именно поток который закончил - очень быстро их все использует, так как у нас БОЛЬШЕ нету аккаунтов, а он всё получает и получает.



  • @kibec Если брать ресурсы ни в ручную, а через {{ }}, то прерываться не должно, потому что мне уже админ объяснил, что как только поток берет ресурс, то он лочится, а с залоченными ресурсами скрипт прерваться не может. (т.е. при попытке взять ресурс из пустого списка, скрипт не прервется, пока список залочен)


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.