首页 > 解决方案 > Flask 后端中的 Python 线程脚本执行

问题描述

目前我正在尝试使用正确的线程来执行一堆脚本。

它们是这样排序的:主线程(运行 Flask 应用程序)-分析线程(运行调用所有需要的脚本的分析脚本)-3 个作为线程执行的不同函数(分为 3 个部分,因此分析运行得更快)

我的问题是我有一个带有分析线程的全局变量,以便能够在调用后确定线程是否正在运行。它第一次启动并运行良好。然后,您可以随意调用该端点,它不会做任何事情,因为我返回 423 表示线程(分析)仍在运行。在所有脚本完成后, if 子句analysis_thread.isAlive()返回 false 并尝试再次开始分析,analysis_thread.start()但这不起作用,它会引发异常,说明线程已经处于活动状态并且无法启动两次。

有没有办法实现脚本可以启动并且在它运行时它返回另一个代码但是当它完成时我可以再次启动它?

感谢您的阅读和您的所有帮助

克里斯托夫

标签: pythonmultithreadingflaskpython-multithreadingflask-restplus

解决方案


现在希望可行的解决方案是永远不要停止线程并让它等待。

在分析脚本中,我有一个全局变量,表示默认情况下它设置为 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.

然后我只是从 Controller 类中将标志设置为 True ,这样它就开始执行了


推荐阅读