В настоящее время я пытаюсь использовать правильную потоковую передачу для выполнения кучи скриптов.
Они отсортированы так: Основной поток (запускает приложение Flask) -Analysis Thread (запускает сценарий анализа, который вызывает все необходимые сценарии) -3 различных функции, выполняемых как поток (разделены на 3 части, чтобы анализ выполнялся быстрее)
Моя проблема в том, что у меня есть глобальная переменная с потоком анализа, чтобы после вызова можно было определить, запущен поток или нет. В первый раз он запускается и работает нормально. Затем вы можете вызывать эту конечную точку так часто, как вам нравится, она ничего не сделает, потому что я возвращаю 423, чтобы указать, что поток (анализ) все еще выполняется. После того, как все сценарии завершены, предложение if с analysis_thread.isAlive()
возвращает false, как и должно, и пытается снова запустить анализ с analysis_thread.start()
, но это не работает, оно выдает исключение, в котором говорится, что поток уже активен и не может быть запущен дважды.
Есть ли способ добиться того, чтобы сценарий можно было запустить, и пока он работает, он возвращает другой код, но когда он будет завершен, я могу запустить его снова?
Спасибо за чтение и за вашу помощь
Кристоф
🤔 А знаете ли вы, что...
Python является интерпретируемым языком программирования.
Надеюсь, теперь работающее решение - никогда не останавливать поток и просто подождать.
в сценарии анализа у меня есть глобальная переменная, которая указывает, что по умолчанию ей присвоено значение False.
внутри функции выполняется два момента:
while True:
while not thread_status:
time.sleep(30)
execution of the other scripts.
thread_status = False # to ensure the execution runs just once.
Затем я просто установил флаг в True из класса контроллера, чтобы он начал выполнение