X-Git-Url: https://git.ralfj.de/saartuer.git/blobdiff_plain/13b37750aa7399b7a8f9634e7fe7f34b0197fbf8..b8b6e14e6923809efc61c71dd94b1e66026aad9b:/libtuer.py diff --git a/libtuer.py b/libtuer.py index 1789b90..01c04ae 100644 --- a/libtuer.py +++ b/libtuer.py @@ -5,7 +5,7 @@ import email.mime.text, email.utils # Logging configuration syslogLevel = logging.INFO mailLevel = logging.CRITICAL # must be "larger" than syslog level! -mailAddress = ['post+tuer'+'@'+'ralfj.de', 'vorstand@lists.hacksaar.de'] +from config import mailAddress printLevel = logging.DEBUG # Mail logging handler @@ -58,16 +58,26 @@ class Logger: logger = Logger() +# run a Python command asynchronously +def fire_and_forget(f): + def _fire_and_forget(): + try: + f() + except Exception as e: + logger.critical("fire_and_forget: Got exception out of callback: %s" % str(e)) + logger.debug(traceback.format_exc()) + t = threading.Thread(target=_fire_and_forget) + t.start() + # run a command asynchronously and log the return value if not 0 # prefix must be a string identifying the code position where the call came from -def fire_and_forget (cmd, log, prefix): - def _fire_and_forget (): +def fire_and_forget_cmd (cmd, log, prefix): + def _fire_and_forget_cmd (): with open("/dev/null", "w") as fnull: retcode = subprocess.call(cmd, stdout=fnull, stderr=fnull) if retcode is not 0: logger.error("%sReturn code %d at command: %s" % (prefix,retcode,str(cmd))) - t = threading.Thread(target=_fire_and_forget) - t.start() + fire_and_forget(_fire_and_forget_cmd) # Threaded callback class class ThreadFunction():