def cleanup(signum=None, frame=None): global log, importThread, app if type(signum) == type(None): pass else: log.info(u'Signal %i caught, saving and exiting...' % int(signum)) log.info(u'Stopping worker threads') if importThread != None: importThread.stop() importThread.join(5) if importThread.isAlive(): log.error(u'Failed to clean up importThread') log.info(u'Stopping CherryPy Engine') app.stop() log.info(u'Clean up complete') sys.exit(0)
app.stop() log.info(u'Clean up complete') sys.exit(0) # application entry - starts the database connection and dev server if __name__ == '__main__': global log, importThread, app threads = [] log = log.Log(__name__) # TODO: also register for CherryPy shutdown messages log.info(u'Registering for shutdown signals') for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT]: signal.signal(sig, cleanup) # start worker threads log.info(u'Starting worker threads') importThread = musik.importer.ImportThread() importThread.start() threads.append(importThread) # query audiotranscode for available codecs transcode = musik.audiotranscode.AudioTranscode() row_format = "{:>10}" * 3 log.info(u'Supported Encoders:') log.info(row_format.format('ENCODER', 'INSTALLED', 'FILETYPE')) for enc in transcode.Encoders: