должен ли я добавить функцию прокси
@dilolo Нет, прокси должен приклеиться из профиля. Но лучше проверять.
не соображу, мне нужно запускать потоки, если sql запрос вернул задачу. потоки стартанули, отработали и закрылись, до следующей задачи из базы.
как правильно такая задача реализуется, подскажите пожалуйста?
@buzzlighter mojno sdelat 1 handler osnovnoy main potok cherez while, kotoriy budet proveryat sql, k primeru sql vernet "zadacha:x,kolichestvo browserov:y", esli zadacha est, on cherez async function zapuskaet func X v kolichestve Y raz(kolichestvo browser'ov) cherez FOR cycle, i potom vozvrashaetsa opyat v while i jdet sql
@clarabellerising вариант не плохой, но получается нет "независимой подвески". пока один цикл while не отработает (все потоки завершатся), скрипт будет стоять в ожидании
а я стремлюсь решить задачу таким образом, что если есть задача на 10 потоков, 10 потоков стартанули, пока они работают, снова есть задача на 6 потоков, еще 6 стартанули.
чтобы не было ожидания завершения предыдущих потоков.
@buzzlighter i chem tebe ne podhodit takoy variant?Nije numeraciya deystviy osnovnogo potoka v while
while ne poluchil zadachi, 5 sec podojdal
while poluchil zadachu zapustil 10 broswerov ASYNC'hronno
WHILE ne ostanavlivaetsa potomuchto zapustil 10 browserov porabotat ASYNC'hronno
3..5) while ne poluchil zadachi, 5 sec podojdal PRI ETOM 10 BROWSEROV RABOTAET
dopustim 1 iz browserov zakonchil na etom momente raboty, teper 9 aktualnih browserov rabotaet
upd.sorry za oformlenie ono prigaet, razbiratsa vpadly
@clarabellerising да, уловил, согласен!
а макс количество браузеров через глобальную переменную какую-нибудь? как не перегрузить сервак?
@buzzlighter said in запуск мульти потоков по тригеру:
как не перегрузить сервак?
больше 100% не загрузишь
спасите помогите
получаю задачу из БД, например, нужно выполнить её 100 раз. 100 потоков не могу одновременно запустить, могу например 10 [[THREADS]]
в BROWSERTEST сейчас просто log и sleep, в настройках true/wait/кол-во функций [[THREADS]]
моя логика, что for должен отрабатывать столько, сколько я могу запустить потоков, при этом сама функция должна отслеживать, а сколько раз функция уже запущена

по факту
в режиме записи выполняет последовательно как и задумано.
в режиме запуска BROWSERTEST вообще невызывается, нет вывода log.
при этом цикл херачит до бесконечности, ни о каком лимите одновремено выполняемых АФ не идет речи
что я упустил?
@buzzlighter said in запуск мульти потоков по тригеру:
что я упустил?
Без полного вида цикла и содержания используемых переменных в моменте работы этого цикла - сложно сказать.
Для начала я бы проверял [[THREADS]] - так как бесконечно не должно быть
@spam said in запуск мульти потоков по тригеру:
@buzzlighter said in запуск мульти потоков по тригеру:
что я упустил?
Без полного вида цикла и содержания используемых переменных в моменте работы этого цикла - сложно сказать.
Для начала я бы проверял [[THREADS]] - так как бесконечно не должно быть
[[THREADS]] это из ресурсов, указываю какое количество потоков должно быть
По сути это почти полный код, выше стоит While true, затем sql запрос к базе на получение новой задачи и если задача есть, переходит к этому for
@buzzlighter said in запуск мульти потоков по тригеру:
не соображу, мне нужно запускать потоки, если sql запрос вернул задачу. потоки стартанули, отработали и закрылись, до следующей задачи из базы.
как правильно такая задача реализуется, подскажите пожалуйста?
Используйте действие "Вызов функции в несколько потоков"

@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. Выводите содержимое переменных в лог, так вы увидите причину

это всё что на данный момент есть в асинхронной функции
в режиме запуска в лог ничего не падает
в for добавлю sleep
@buzzlighter said in запуск мульти потоков по тригеру:
это всё что на данный момент есть в асинхронной функции
в режиме запуска в лог ничего не падаетв for добавлю sleep
На будущее, не присылайте скриншоты кода, в них сложно бывает разобраться. Лучше приложите тестовый скрипт (скрипт, который не содержит лишних действий), вам быстрее смогут помочь
сейчас добавил слип
внимательно оттестил на трех потоках [[THREADS]].
в режиме запуска происходит следующее
работает цикл, вызывается асинхронная функция, после в цикле слип 1сек. в функции стоит слип 10сек.
наблюдаю картину, что цикл плодит функции, не соблюдая ограничение в 3 одновременных функции одновременно
ура, я освоил и работает как я ожидал
теперь вопрос

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