当Timer在后台运行时如何优雅地退出Bottle?

时间:2013-02-28 04:17:02

标签: python multithreading keyboard-events bottle

当我启动我的瓶子app时,一个对象会创建一个永久运行的计时器:

from threading import Timer

class Watcher(object):
    def __init__(self, timer=Timer):
        self.timer = timer
        self.watcher_interval = 2 * 60 * 60
        self.check_condition()

    def check_condition(self):
        do_stuff()
        self.timer(self.watcher_interval, self.check_condition).start()

这很好用。

但是,我现在无法通过 Ctrl + C 退出应用程序,因为Timer仍然在后台运行。

如何在发送键盘中断时告诉Timer退出?截至目前,我必须要么通过它的PID杀死它,要么我感到懒惰killall python

1 个答案:

答案 0 :(得分:0)

计时器继承自Thread,因此在创建计时器时,通过将其daemon实例变量设置为True(在启动之前)来指定它是daemon thread;这样做会导致它在Python确定没有运行非守护程序线程时终止。