29 lines
793 B
Python
29 lines
793 B
Python
import threading, time
|
|
|
|
class WatchDog():
|
|
def __init__(self, timeout, bark_fn, interval=3, msg="") -> None:
|
|
self.last_feed = None
|
|
self.timeout = timeout
|
|
self.bark_fn = bark_fn
|
|
self.interval = interval
|
|
self.msg = msg
|
|
self.kill_dog = False
|
|
|
|
def watch(self):
|
|
while True:
|
|
if self.kill_dog: break
|
|
if time.time() - self.last_feed > self.timeout:
|
|
if len(self.msg) > 0: print(self.msg)
|
|
self.bark_fn()
|
|
break
|
|
time.sleep(self.interval)
|
|
|
|
def begin_watch(self):
|
|
self.last_feed = time.time()
|
|
th = threading.Thread(target=self.watch)
|
|
th.daemon = True
|
|
th.start()
|
|
|
|
def feed(self):
|
|
self.last_feed = time.time()
|