def try_db_connect(attempts=0): """Try connecting to the db""" try: UniqueIndex.database_connect() except peewee.OperationalError, ex: if attempts < DATABASE_CONNECT_ATTEMPTS: sleep(DATABASE_WAIT) attempts += 1 try_db_connect(attempts) else: raise ex
def test_index_update(self): """ test return and update of unique index """ with test_database(SqliteDatabase(':memory:'), [UniqueIndex]): test_object = UniqueIndex.create(idid='file', index=892) self.assertEqual(test_object.idid, 'file') index, index_range = update_index(10, 'file') self.assertEqual(index, 892) self.assertEqual(index_range, 10) index, index_range = update_index(10, 'file') self.assertEqual(index, 902) self.assertEqual(index_range, 10) index, index_range = update_index(10, 'new') self.assertEqual(index, 0) self.assertEqual(index_range, 10) index, index_range = update_index(10, 'new') self.assertEqual(index, 10) self.assertEqual(index_range, 10) index, index_range = update_index(None, 'new') self.assertEqual(index, -1) self.assertEqual(index_range, -1) index, index_range = update_index(2, None) self.assertEqual(index, -1) self.assertEqual(index_range, -1) index, index_range = update_index(-5, 'new') self.assertEqual(index, -1) self.assertEqual(index_range, -1)
def application(environ, start_response): """ The wsgi callback """ try: # catch and handle bogus requests (ex. faveicon) valid = valid_request(environ) if not valid: status, response_headers, response_body = create_invalid_return() start_response(status, response_headers) return [response_body] # get the index range and index mode from the query string id_range, id_mode = range_and_mode(environ) # get the new unique end index if id_range and id_mode: UniqueIndex.database_connect() index, id_range = update_index(id_range, id_mode) UniqueIndex.database_close() if index and id_range: # create the response with start and end indices status, response_headers, response_body = create_valid_return(index, id_range) # send it back to the requestor start_response(status, response_headers) return [response_body] # something bad status, response_headers, response_body = create_invalid_return() start_response(status, response_headers) return [response_body] except peewee.OperationalError, ex: peewee_logger = logging.getLogger("peewee") peewee_logger.setLevel(logging.DEBUG) peewee_logger.addHandler(logging.StreamHandler()) peewee_logger.warn("OperationalError(%s)", str(ex))
main_logger.info("MYSQL_ENV_MYSQL_DATABASE = %s", os.getenv("MYSQL_ENV_MYSQL_DATABASE")) main_logger.info("MYSQL_PORT_3306_TCP_ADDR = %s", os.getenv("MYSQL_PORT_3306_TCP_ADDR")) main_logger.info("MYSQL_PORT_3306_TCP_PORT = %s", os.getenv("MYSQL_PORT_3306_TCP_PORT")) main_logger.info("MYSQL_ENV_MYSQL_USER = %s", os.getenv("MYSQL_ENV_MYSQL_USER")) main_logger.info("MYSQL_ENV_MYSQL_PASSWORD = %s", os.getenv("MYSQL_ENV_MYSQL_PASSWORD")) def try_db_connect(attempts=0): """Try connecting to the db""" try: UniqueIndex.database_connect() except peewee.OperationalError, ex: if attempts < DATABASE_CONNECT_ATTEMPTS: sleep(DATABASE_WAIT) attempts += 1 try_db_connect(attempts) else: raise ex try_db_connect() if not UniqueIndex.table_exists(): UniqueIndex.create_table() UniqueIndex.database_close() httpd = make_server("0.0.0.0", 8051, application) httpd.serve_forever() if __name__ == "__main__": main()