X-Git-Url: http://git.treefish.org/~alex/mtxbot.git/blobdiff_plain/ae2e285f93912a4e138685f1f7accfe6c4a5bfd6..refs/heads/master:/src/mtxbot.py?ds=inline diff --git a/src/mtxbot.py b/src/mtxbot.py index 0372ffe..011341f 100755 --- a/src/mtxbot.py +++ b/src/mtxbot.py @@ -16,10 +16,10 @@ assert sys.version_info >= (3, 5) from presence import Presence def handleInterrupt(sig, frame): - global stopped + global stop if os.getpid() == mainPid: logging.info( "Got stop signal." ) - stopped = True + stop = True for presence in presences: presence.stop() @@ -36,6 +36,9 @@ async def main(): done, pending = await asyncio.wait( presence_tasks, return_when = asyncio.FIRST_EXCEPTION ) + for presence in presences: + presence.stop() + for task in done: try: task.result() @@ -43,6 +46,7 @@ async def main(): logging.error( "Error running task: %s" % str(e) ) finally: + logging.info("Closing client...") await client.close() logging.basicConfig(format='[%(asctime)s] %(levelname)s: %(message)s', @@ -51,8 +55,9 @@ logging.basicConfig(format='[%(asctime)s] %(levelname)s: %(message)s', mainPid = os.getpid() signal.signal(signal.SIGINT, handleInterrupt) +signal.signal(signal.SIGTERM, handleInterrupt) -stopped = False +stop = False if len(sys.argv) != 2: print("Usage: %s " % sys.argv[0]) @@ -61,10 +66,12 @@ if len(sys.argv) != 2: with open(sys.argv[1]) as configFile: config = json.load(configFile) -while not stopped: +fifo_dir = os.getenv('MTXBOT_FIFO_DIR', '/run/mtxbot') + +while not stop: presences = [] - for entry in os.listdir(config['paths']['fifodir']): - fullpath = "%s/%s" % (config['paths']['fifodir'], entry) + for entry in os.listdir(fifo_dir): + fullpath = "%s/%s" % (fifo_dir, entry) if stat.S_ISFIFO(os.stat(fullpath).st_mode): logging.info("Creating presence for %s..." % entry) presences.append( Presence(entry, fullpath) ) @@ -72,7 +79,7 @@ while not stopped: logging.error("No fifos could be found!") break asyncio.run(main()) - if not stopped: + if not stop: logging.warning("Main loop exited!") logging.info("Restarting after grace period...") time.sleep(3.0)