@bluefasik

Как остановить поток при вводе команды?

def start_parser(message):
    if db.get_temp_country(message.from_user.id) == 'pool':
        pool = PoolUi()
        thread_counter = Thread(target=pool.generate_link).start()
        thread_counter = Thread(target=loading_advs(message).start()

У меня есть функция в телеграмv боте, которая запускает парсер из другого класса "PoolUi", соовместно с ним запускается другая функция, которая показывает процесс загрузки. Как сделать чтобы в при вводе команды "/stop" парсер завершался, а бот мог дальше работать?
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Единственный вменяемый способ - тело потока должно время от времени проверять какое-то условие (будь то объект threading.Event, или просто будевая переменная). Соответственно, если условие выполнилось, тело потока должно немедленно завершиться, не доделывая начатое.

Если ты не контролируешь, что происходит в теле потока, и не можешь разделить его работу на отдельные мелкие итерации (чтобы в промежутке между ними проверять условие), то хорошего решения нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы