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



  • @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 Если брать ресурсы ни в ручную, а через {{ }}, то прерываться не должно, потому что мне уже админ объяснил, что как только поток берет ресурс, то он лочится, а с залоченными ресурсами скрипт прерваться не может. (т.е. при попытке взять ресурс из пустого списка, скрипт не прервется, пока список залочен)


  • administrators

    @kibec

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

    Нет, если какой-то поток еще использует ресурс, то скрипт не закончит работу, пока этот ресурс используется.


  • administrators

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

    Так и будет происходить. Поток, который перезапустился будет вечно ждать ресурса


  • administrators

    @kibec Вот проект который демонстрирует этот подход:

    0_1476376564868_useres.xml

    Вот сам файл:

    line1
    line2
    line3
    line4
    line5
    line6
    line7
    line8
    line9
    line10
    

    Вот вывод:

    [19:33:47] Поток №1 : Начинаю работу с ресурсом line1
    [19:33:47] Поток №2 : Начинаю работу с ресурсом line2
    [19:33:47] Поток №3 : Начинаю работу с ресурсом line3
    [19:33:47] Поток №4 : Начинаю работу с ресурсом line4
    [19:33:47] Поток №5 : Начинаю работу с ресурсом line5
    [19:33:48] Поток №2 : Работа с ресурсом завершена line2
    [19:33:48] Поток №2 : Поток выполнен успешно с сообщением "Ok"
    [19:33:48] Поток №2 : Начинаю работу с ресурсом line6
    [19:33:52] Поток №1 : Работа с ресурсом завершена line1
    [19:33:52] Поток №1 : Поток выполнен успешно с сообщением "Ok"
    [19:33:52] Поток №1 : Начинаю работу с ресурсом line7
    [19:33:52] Поток №5 : Работа с ресурсом завершена line5
    [19:33:52] Поток №5 : Поток выполнен успешно с сообщением "Ok"
    [19:33:52] Поток №5 : Начинаю работу с ресурсом line8
    [19:33:52] Поток №2 : Работа с ресурсом завершена line6
    [19:33:52] Поток №2 : Поток выполнен успешно с сообщением "Ok"
    [19:33:52] Поток №2 : Начинаю работу с ресурсом line9
    [19:33:53] Поток №3 : Работа с ресурсом завершена line3
    [19:33:53] Поток №3 : Поток выполнен успешно с сообщением "Ok"
    [19:33:53] Поток №3 : Начинаю работу с ресурсом line10
    [19:33:55] Поток №1 : Работа с ресурсом завершена line7
    [19:33:55] Поток №1 : Поток выполнен успешно с сообщением "Ok"
    [19:33:56] Поток №4 : Работа с ресурсом завершена line4
    [19:33:56] Поток №4 : Поток выполнен успешно с сообщением "Ok"
    [19:33:56] Поток №5 : Работа с ресурсом завершена line8
    [19:33:56] Поток №5 : Поток выполнен успешно с сообщением "Ok"
    [19:33:57] Поток №3 : Работа с ресурсом завершена line10
    [19:33:57] Поток №3 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Поток №2 : Работа с ресурсом завершена line9
    [19:34:01] Поток №2 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Поток №2 : Поток аварийно завершился с сообщением "не удалось получить ресурс file"
    [19:34:01] Поток №1 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Поток №3 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Поток №4 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Поток №5 : Поток выполнен успешно с сообщением "Ok"
    [19:34:01] Скрипт завершен корректно
    

    Как видите, отработали все строки.


Log in to reply
 

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