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

Поддержка
  • @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