diff --git a/posts.py b/posts.py index 12e0648a2..e9552e13a 100644 --- a/posts.py +++ b/posts.py @@ -16,6 +16,7 @@ import shutil import threading import sys import trace +from threads import threadWithTrace from cache import storePersonInCache from cache import getPersonFromCache from pprint import pprint @@ -33,36 +34,6 @@ sendThreads = [] # stores the results from recent post sending attempts postLog = [] -class threadWithTrace(threading.Thread): - def __init__(self, *args, **keywords): - threading.Thread.__init__(self, *args, **keywords) - self.killed = False - - def start(self): - self.__run_backup = self.run - self.run = self.__run - threading.Thread.start(self) - - def __run(self): - sys.settrace(self.globaltrace) - self.__run_backup() - self.run = self.__run_backup - - def globaltrace(self, frame, event, arg): - if event == 'call': - return self.localtrace - else: - return None - - def localtrace(self, frame, event, arg): - if self.killed: - if event == 'line': - raise SystemExit() - return self.localtrace - - def kill(self): - self.killed = True - def getPersonKey(username: str,domain: str,keyType='public'): """Returns the public or private key of a person """ diff --git a/threads.py b/threads.py new file mode 100644 index 000000000..2dc6609b4 --- /dev/null +++ b/threads.py @@ -0,0 +1,41 @@ +__filename__ = "threads.py" +__author__ = "Bob Mottram" +__license__ = "AGPL3+" +__version__ = "0.0.1" +__maintainer__ = "Bob Mottram" +__email__ = "bob@freedombone.net" +__status__ = "Production" + +import threading +import sys +import trace + +class threadWithTrace(threading.Thread): + def __init__(self, *args, **keywords): + threading.Thread.__init__(self, *args, **keywords) + self.killed = False + + def start(self): + self.__run_backup = self.run + self.run = self.__run + threading.Thread.start(self) + + def __run(self): + sys.settrace(self.globaltrace) + self.__run_backup() + self.run = self.__run_backup + + def globaltrace(self, frame, event, arg): + if event == 'call': + return self.localtrace + else: + return None + + def localtrace(self, frame, event, arg): + if self.killed: + if event == 'line': + raise SystemExit() + return self.localtrace + + def kill(self): + self.killed = True