Flask后端中的Python线程脚本执行

时间:2018-08-15 10:49:36

标签: python multithreading flask python-multithreading flask-restplus

当前,我正在尝试使用适当的线程执行一堆脚本。

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

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

有没有一种方法可以启动脚本,并且在脚本运行时返回另一个代码,但是完成后我可以再次启动它?

感谢您的阅读和所有帮助

Christoph

1 个答案:

答案 0 :(得分:0)

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

在分析脚本中,我有一个全局变量,该变量指示默认情况下将其设置为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,以便它开始执行

相关问题