def action(self, query, args=None): with db_lock: if query == None: return sqlResult = None attempt = 0 while attempt < 5: try: if args == None: logger.debug("Executing: " + query, 'Database ' + self.filename) sqlResult = self.connection.execute(query) else: logger.debug("Executing: " + query+" with args " + str(args), 'Database' + self.filename) sqlResult = self.connection.execute(query, args) self.connection.commit() # get out of the connection attempt loop since we were successful break except sqlite3.OperationalError, e: if "unable to open database file" in e.message or "database is locked" in e.message: logger.warning("Database error: " + e.message, 'Database' + self.filename) attempt += 1 time.sleep(1) else: logger.error("DataBase error: " + e.message, 'Database' + self.filename) raise except sqlite3.DatabaseError, e: logger.error("Fatal error executing query: " + e.message, 'Database' + self.filename) raise
def shutdown(): save() logger.debug("Killing cherrypy", 'Shutdown') cherrypy.engine.exit() if CREATEPID: logger.debug("Removing pidfile " + str(PIDFILE), 'Shutdown') os.remove(PIDFILE) logger.debug("Exiting MAIN thread", 'Shutdown') sys.exit()
def save(): global CONFIG logger.debug("Saving config file", 'Shutdown') CONFIG.saveConfig()