@Quaclix Если по уму то использовать официальный библиотеки https://github.com/CheshireCaat/bas-remote-node там же есть для пайтона и c#. Если не пойму то городить костыли в виде вечного цикла + база . Бот условно пишет задание в базу, а скрипт периодически проверяет новые задание и запускает например асинхронные функции
Как запустить функцию в потоке N?
-
С помощью TelegramAdvancded я отправляю команду о запуске браузера.
Запустилось 10 браузеров и ждут.
после этого я отправляю команду которая запускает функцию которая запускает сайт.
Как мне указать что в браузере 6 запустить эту функцию?
Или как сделать что бы запускать эту функцию в случайном браузере?Как запускать функцию в конкретном потоке?
-
@fexil said in Как запустить функцию в потоке N?:
С помощью TelegramAdvancded я отправляю команду о запуске браузера.
Запустилось 10 браузеров и ждут.
после этого я отправляю команду которая запускает функцию которая запускает сайт.
Как мне указать что в браузере 6 запустить эту функцию?
Или как сделать что бы запускать эту функцию в случайном браузере?Как запускать функцию в конкретном потоке?
Удалённо из другого потока можно только запустить или завершить асинхронно запущенную функцию. Вы можете реализовать необходимую логику с помощью глобальных переменных
-
@fexil said in Как запустить функцию в потоке N?:
@Fox Могли бы подсказать как? Не понимаю принцип работы через них
Основной поток через телеграм получает команду и устанавливает необходимое значение в глобальную переменную, остальные потоки в цикле ждут значение из глобальной переменной.
К примеру для запуска функции в определённом потоке можно через тг отправлять номер потока, в BAS записывать этот номер в глобальную переменную, а потоки в цикле ожидания сравнивают значение из глобальной переменной с номерами своих потоков.
-
@Fox То есть когда я запускаю браузер, внутри него я создаю асинхрон while цикл, который проверяет глобальную переменную в который например "/scroll down'' и если там что то есть, выполнить функцию?
Если так, то не будет ли оно сильно грузить? while цикл сразу асинхрон или его надо как то так сделать?
-
@fexil said in Как запустить функцию в потоке N?:
@Fox То есть когда я запускаю браузер, внутри него я создаю асинхрон while цикл, который проверяет глобальную переменную в который например "/scroll down'' и если там что то есть, выполнить функцию?
Чегось?
Если так, то не будет ли оно сильно грузить? while цикл сразу асинхрон или его надо как то так сделать?
Цикл ожидания подразумевает ожидание, то есть действие "Спать"
-
@Fox Я думал вы имеете ввиду такую логику:
Бот: отправляет команду '/start_browser 5'
Запускается 5 браузеров, в каждом из них по завершению прогрузки страницы активируется цикл while, который проверяет глобальную переменную на команду для исполняние.
Например, бот отправляет команду '/visit gmail.com' 4:
Это команда попадает в глобальную строку, и в браузере 4, while цикл проверяет, совпадает ли его ID потока с ID потока в сообщение бота. Если совпадает, запустить команду '/visit gmail.com'.Если использовать действие спать, как мне все равно обратиться к этому потоку который спит и сказать ему '/visit gmail'?
С каждым уточнением появляются все более сложные вопросы :)
-
@fexil said in Как запустить функцию в потоке N?:
@Fox Я думал вы имеете ввиду такую логику:
Бот: отправляет команду '/start_browser 5'
Запускается 5 браузеров, в каждом из них по завершению прогрузки страницы активируется цикл while, который проверяет глобальную переменную на команду для исполняние.
Например, бот отправляет команду '/visit gmail.com' 4:
Это команда попадает в глобальную строку, и в браузере 4, while цикл проверяет, совпадает ли его ID потока с ID потока в сообщение бота. Если совпадает, запустить команду '/visit gmail.com'.Если использовать действие спать, как мне все равно обратиться к этому потоку который спит и сказать ему '/visit gmail'?
С каждым уточнением появляются все более сложные вопросы :)
Полноценного враппера BAS не получится создать, то есть нельзя сделать так, что бы в телеграмм вы отправляли любые команды, а BAS их выполнял. Все команды вы должны прописать в скрипте самостоятельно и логику их выполнения. ТГ присылает строку, скрипт сравнивает эту строку в условиях и если попадается условие, под которое подходит эта строка - условие выполняется и выполняется всё то, что положите внутрь этого условия
-
@fexil said in Как запустить функцию в потоке N?:
@Fox Ну это понятно что /visit gmail - функция, заранее прописанная. Запускается когда от телеграма приходит сообщение /visit gmail.
Но как сделать ее для конкретного потока. Если потоков 10, а ее надо запустить в 7 потоке.Через условие, поток определяет свой номер и сравнивает с цифрой из глобальной переменной