当烧瓶服务器退出时,线程仍然运行

时间:2017-12-18 09:29:26

标签: python multithreading flask

正如标题所描述的那样,我创建了一个单独的线程来完成Flask中的长任务。

import schedule
import time

start_time = time.time()


def job():
    print("I'm working..." + str(time.time() - start_time))


def run_schedule():
    while True:
        schedule.run_pending()
        time.sleep(1)

当我按Ctrl + c终止服务器时,线程仍为prints如何在服务器退出时停止线程?

1 个答案:

答案 0 :(得分:2)

您可能希望将线程设置为daemon

一个线程一直运行直到它自己结束或者它被明确地杀死。

守护程序线程以相同的条件运行,并且如果至少有一个其他非守护程序线程正在运行:这意味着如果您结束主线程并且没有其他线程正在运行,则所有守护程序线程也将结束。

如果您正在使用线程模块,可以通过更改其布尔值将线程设置为守护程序:

import threading
your_thread.daemon = True

如果你正在使用线程模块,它应该是kwargs之一