запуск мульти потоков по тригеру

Поддержка
  • @buzzlighter said in запуск мульти потоков по тригеру:

    как не перегрузить сервак?

    больше 100% не загрузишь

  • спасите помогите
    получаю задачу из БД, например, нужно выполнить её 100 раз. 100 потоков не могу одновременно запустить, могу например 10 [[THREADS]]
    в BROWSERTEST сейчас просто log и sleep, в настройках true/wait/кол-во функций [[THREADS]]

    моя логика, что for должен отрабатывать столько, сколько я могу запустить потоков, при этом сама функция должна отслеживать, а сколько раз функция уже запущена

    image.png

    по факту
    в режиме записи выполняет последовательно как и задумано.
    в режиме запуска BROWSERTEST вообще невызывается, нет вывода log.
    при этом цикл херачит до бесконечности, ни о каком лимите одновремено выполняемых АФ не идет речи

    что я упустил?

  • @buzzlighter said in запуск мульти потоков по тригеру:

    что я упустил?

    Без полного вида цикла и содержания используемых переменных в моменте работы этого цикла - сложно сказать.

    Для начала я бы проверял [[THREADS]] - так как бесконечно не должно быть

  • @spam said in запуск мульти потоков по тригеру:

    @buzzlighter said in запуск мульти потоков по тригеру:

    что я упустил?

    Без полного вида цикла и содержания используемых переменных в моменте работы этого цикла - сложно сказать.

    Для начала я бы проверял [[THREADS]] - так как бесконечно не должно быть

    [[THREADS]] это из ресурсов, указываю какое количество потоков должно быть
    По сути это почти полный код, выше стоит While true, затем sql запрос к базе на получение новой задачи и если задача есть, переходит к этому for

  • @buzzlighter said in запуск мульти потоков по тригеру:

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

    Используйте действие "Вызов функции в несколько потоков"

    1297e56c-c13b-4fbc-9208-7e0bbbea3f67-изображение.png

  • @Fox но тогда у меня каждый из потоков не получит свои уникальные параметры [[JOB_ACCOUNT]], верно? они все будут идентичны?

  • @buzzlighter said in запуск мульти потоков по тригеру:

    @Fox но тогда у меня каждый из потоков не получит свои уникальные параметры [[JOB_ACCOUNT]], верно? они все будут идентичны?

    Перед запуском функции создайте локальный ресурс и заполните его данными

  • на всякий случай еще раз свою мысль:
    имею возможность запускать, к примеру, 50 потоков
    каждые 5 сек проверяю БД на наличие задачи. в задаче может быть 5 выполнений, может быть 500.
    пытаюсь реализовать таким образом, чтобы каждые 5 сек стартовали потоки, если есть свободные и выполняли свои задачи.

    50 потоков
    задача1, 50 заданий, стартанули все 50 потоков
    спим 5 сек
    задача2, 10 заданий, не стартануло нисколько, все потоки заняты
    спим 5 сек
    задача2, 10 заданий, освободилось 6 потоков, стартануло 6 потоков
    спим 5 сек
    задача2, осталось 4 задания, освободилось 20 потоков, стартануло 4 потока
    спим 5 сек
    задача3.......

  • @buzzlighter said in запуск мульти потоков по тригеру:

    на всякий случай еще раз свою мысль:
    имею возможность запускать, к примеру, 50 потоков
    каждые 5 сек проверяю БД на наличие задачи. в задаче может быть 5 выполнений, может быть 500.
    пытаюсь реализовать таким образом, чтобы каждые 5 сек стартовали потоки, если есть свободные и выполняли свои задачи.

    50 потоков
    задача1, 50 заданий, стартанули все 50 потоков
    спим 5 сек
    задача2, 10 заданий, не стартануло нисколько, все потоки заняты
    спим 5 сек
    задача2, 10 заданий, освободилось 6 потоков, стартануло 6 потоков
    спим 5 сек
    задача2, осталось 4 задания, освободилось 20 потоков, стартануло 4 потока
    спим 5 сек
    задача3.......

    тут важный момент, вам нужно ждать завершения потоков с одной задачи, прежде чем они начнут другую задачу? Если да, то используйте "Вызов функции в несколько потоков", если нет, то используйте действие "Вызов функции асинхронно", а данные в функцию передавайте через атрибут функции

  • @Fox said in запуск мульти потоков по тригеру:

    @buzzlighter said in запуск мульти потоков по тригеру:

    на всякий случай еще раз свою мысль:
    имею возможность запускать, к примеру, 50 потоков
    каждые 5 сек проверяю БД на наличие задачи. в задаче может быть 5 выполнений, может быть 500.
    пытаюсь реализовать таким образом, чтобы каждые 5 сек стартовали потоки, если есть свободные и выполняли свои задачи.

    50 потоков
    задача1, 50 заданий, стартанули все 50 потоков
    спим 5 сек
    задача2, 10 заданий, не стартануло нисколько, все потоки заняты
    спим 5 сек
    задача2, 10 заданий, освободилось 6 потоков, стартануло 6 потоков
    спим 5 сек
    задача2, осталось 4 задания, освободилось 20 потоков, стартануло 4 потока
    спим 5 сек
    задача3.......

    тут важный момент, вам нужно ждать завершения потоков с одной задачи, прежде чем они начнут другую задачу? Если да, то используйте "Вызов функции в несколько потоков", если нет, то используйте действие "Вызов функции асинхронно", а данные в функцию передавайте через атрибут функции

    ждать не нужно
    я так и сделал, асинхронно, как на скрине
    но не отрабатывает корректно, не пойму почему
    в записи корректно
    в запуске функция не вызывается вовсе, for фигачит до бесконечности

  • @buzzlighter said in запуск мульти потоков по тригеру:

    ждать не нужно
    я так и сделал, асинхронно, как на скрине
    но не отрабатывает корректно, не пойму почему
    в записи корректно
    в запуске функция не вызывается вовсе, for фигачит до бесконечности

    Обязательно добавьте действие "Сон" в цикл, иначе может зависнуть BAS. Выводите содержимое переменных в лог, так вы увидите причину

  • @Fox said in запуск мульти потоков по тригеру:

    @buzzlighter said in запуск мульти потоков по тригеру:

    ждать не нужно
    я так и сделал, асинхронно, как на скрине
    но не отрабатывает корректно, не пойму почему
    в записи корректно
    в запуске функция не вызывается вовсе, for фигачит до бесконечности

    Обязательно добавьте действие "Сон" в цикл, иначе может зависнуть BAS. Выводите содержимое переменных в лог, так вы увидите причину

    20c3342d-6b45-4fee-94cc-1aecc00bce8f-image.png
    это всё что на данный момент есть в асинхронной функции
    в режиме запуска в лог ничего не падает

    в for добавлю sleep

  • @buzzlighter said in запуск мульти потоков по тригеру:

    это всё что на данный момент есть в асинхронной функции
    в режиме запуска в лог ничего не падает

    в for добавлю sleep

    На будущее, не присылайте скриншоты кода, в них сложно бывает разобраться. Лучше приложите тестовый скрипт (скрипт, который не содержит лишних действий), вам быстрее смогут помочь

  • сейчас добавил слип
    внимательно оттестил на трех потоках [[THREADS]].
    в режиме запуска происходит следующее

    работает цикл, вызывается асинхронная функция, после в цикле слип 1сек. в функции стоит слип 10сек.
    наблюдаю картину, что цикл плодит функции, не соблюдая ограничение в 3 одновременных функции одновременно

  • ура, я освоил и работает как я ожидал
    теперь вопрос

    43506c88-6947-4282-8911-92fe4aa3013a-image.png

    вверху у меня 6,7,8,9,10 инстанс
    в логе идет инфа от потоков, которые ну как бы не запущены
    это как интерпретировать?

  • @buzzlighter said in запуск мульти потоков по тригеру:

    вверху у меня 6,7,8,9,10 инстанс
    в логе идет инфа от потоков, которые ну как бы не запущены
    это как интерпретировать?

    Потоки могут работать и без браузеров, смотрите логику работы вызова функций

  • @Fox said in запуск мульти потоков по тригеру:

    @buzzlighter said in запуск мульти потоков по тригеру:

    вверху у меня 6,7,8,9,10 инстанс
    в логе идет инфа от потоков, которые ну как бы не запущены
    это как интерпретировать?

    Потоки могут работать и без браузеров, смотрите логику работы вызова функций

    у меня сейчас основная логика в onApplicationStart, которая открывает асинхронно браузеры
    то бишь количество потоков по идее должно равняться браузерам и соответственно поток в логе по идее должен равняться кнопке Браузер #

  • @buzzlighter net, ne doljen, logichno chto doljen sovpadat, no kajdiy raz sozdaetsa noviy potok, poetomy v loge otobrajaetsa noviy #, eto mojno ispravit tolko logikoy, esli silno nujno

  • 0 Votes
    11 Posts
    1153 Views
  • 0 Votes
    10 Posts
    1078 Views
  • 0 Votes
    5 Posts
    1262 Views
  • 0 Votes
    3 Posts
    765 Views
  • Вопрос по JS

    Поддержка
    0 Votes
    9 Posts
    2019 Views