Используйте GET запрос со ссылкой на смену IP
запуск мульти потоков по тригеру
-
не соображу, мне нужно запускать потоки, если 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
- WHILE poluchil zadachy na 6 browserov, zapustil ih ASYNC'hronno (ya specialno videlyayu eto slovo), teper odnovremenno rabotayushih browserov 15!
logiky ulovil? etot obraborchik tolko zapuskaet browser'i on ne jdet kogda to chto on zapustil zakonchitsa, esli ne predusmotreno logikoy
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 инстанс
в логе идет инфа от потоков, которые ну как бы не запущены
это как интерпретировать?