Выполнение скрипта потоковой передачи Python во Flask Backend

В настоящее время я пытаюсь использовать правильную потоковую передачу для выполнения кучи скриптов.

Они отсортированы так: Основной поток (запускает приложение Flask) -Analysis Thread (запускает сценарий анализа, который вызывает все необходимые сценарии) -3 различных функции, выполняемых как поток (разделены на 3 части, чтобы анализ выполнялся быстрее)

Моя проблема в том, что у меня есть глобальная переменная с потоком анализа, чтобы после вызова можно было определить, запущен поток или нет. В первый раз он запускается и работает нормально. Затем вы можете вызывать эту конечную точку так часто, как вам нравится, она ничего не сделает, потому что я возвращаю 423, чтобы указать, что поток (анализ) все еще выполняется. После того, как все сценарии завершены, предложение if с analysis_thread.isAlive() возвращает false, как и должно, и пытается снова запустить анализ с analysis_thread.start(), но это не работает, оно выдает исключение, в котором говорится, что поток уже активен и не может быть запущен дважды.

Есть ли способ добиться того, чтобы сценарий можно было запустить, и пока он работает, он возвращает другой код, но когда он будет завершен, я могу запустить его снова?

Спасибо за чтение и за вашу помощь

Кристоф

🤔 А знаете ли вы, что...
Python является интерпретируемым языком программирования.


212
1

Ответ:

Решено

Надеюсь, теперь работающее решение - никогда не останавливать поток и просто подождать.

в сценарии анализа у меня есть глобальная переменная, которая указывает, что по умолчанию ей присвоено значение 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 из класса контроллера, чтобы он начал выполнение