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

Пишу телебота, который обрабатывает ссылки. Когда пользователь скидывает ссылку, бот начинает обработку, это занимает определённое время. Если в это время скинуть ещё одну ссылку, бот начнёт обрабатывать новую, не закончив со старой, что приведёт к ошибке. Мне нужно запретить принимать новые ссылки, пока идёт обработка текущей. Как лучше сделать?

Пока что я придумал такой способ, создать ACTIVE_STATUS = False и а входе функции поставить проверку if ACTIVE_STATUS = False. Когда начнётся обработка сделать ACTIVE_STATUS = True, а на выходе обратно менять ACTIVE_STATUS = False
Но студия выделяет этот участок ошибкой:
if ACTIVE_STATUS == False:
        ACTIVE_STATUS = True

Возможно есть идеи как это решить? Или может есть какой-то способ, который лучше, чем тот что я придумал?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
@Vindicar
Используй пару queue и отдельный поток для обработки ссылок.
Обработчик читает описание запроса (например, ссылку и id отправителя) из первой очереди, обрабатывает её, и кладёт результат во вторую очередь.
Основной бот при получении ссылки пытается положить её в первую очередь (можно добавить ограничение на максимальный размер очереди!). Также он должен время от времени заглядывать во вторую очередь. Если там что-то есть, то извлечь результат обработки ссылки, и сделать с ним что требуется (например, отправить пользователю).

Плюс такой схемы в том, что можно запустить несколько потоков-обработчиков, если ресурсы компа позволяют. Но нужно будет продумать момент с их остановкой при завершении работы бота.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы