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()
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()
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',
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 <config json>" % sys.argv[0])
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']):
- if stat.S_ISFIFO(os.stat(entry).st_mode):
+ 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, "%s/%s" %
- (config['paths']['fifodir'], entry) ) )
+ presences.append( Presence(entry, fullpath) )
if len(presences) == 0:
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)