def get_agencies(self): # pylint: disable=no-self-use r_connection = self.get_redis_connection('slave') try: data = r_connection.get(KEY_AGENCIES) except redis.ConnectionError as ex: raise exceptions.DatabaseOperationError( 'Cannot get agencies from redis: {0}'.format(ex.message)) if data is None: agencies = None else: try: agencies = json.loads(data) except TypeError: raise exceptions.DatabaseOperationError( 'Invalid format for agencies') raise gen.Return(agencies)
def get_route_vehicles(self, agency_tag, route_tag): # pylint: disable=no-self-use r_connection = self.get_redis_connection('slave') try: key_name = agency_tag + ':' + KEY_ROUTE_VEHICLES + ':' + route_tag data = r_connection.get(key_name) except redis.ConnectionError as ex: raise exceptions.DatabaseOperationError( 'Cannot get route vehicles from redis: {0}'.format(ex.message)) if data is None: vehicles = None else: try: vehicles = json.loads(data) except TypeError: raise exceptions.DatabaseOperationError( 'Invalid format for route vehicles') raise gen.Return(vehicles)
def get_route_schedule(self, agency_tag, route_tag): # pylint: disable=no-self-use r_connection = self.get_redis_connection('slave') try: key_name = agency_tag + ':' + KEY_ROUTE_SCHEDULE + ':' + route_tag data = r_connection.get(key_name) except redis.ConnectionError as ex: raise exceptions.DatabaseOperationError( 'Cannot get route schedule from redis: {0}'.format(ex.message)) if data is None: schedule = None else: try: schedule = json.loads(data) except TypeError: raise exceptions.DatabaseOperationError( 'Invalid format for schedule') raise gen.Return(schedule)
def store_routes(self, agency_tag, routes): # pylint: disable=no-self-use r_connection = self.get_redis_connection('master') routes_ttl = settings.ROUTES_CACHE_TTL_SECONDS try: key_name = agency_tag + ':' + KEY_ROUTES r_connection.set(key_name, json.dumps(routes), ex=routes_ttl) except redis.ConnectionError as ex: raise exceptions.DatabaseOperationError( 'Cannot store routes in redis: {0}'.format(ex.message)) raise gen.Return(routes)
def store_agencies(self, agencies): # pylint: disable=no-self-use r_connection = self.get_redis_connection('master') agencies_ttl = settings.AGENCIES_CACHE_TTL_SECONDS try: r_connection.set(KEY_AGENCIES, json.dumps(agencies), ex=agencies_ttl) except redis.ConnectionError as ex: raise exceptions.DatabaseOperationError( 'Cannot store agencies in redis: {0}'.format(ex.message)) raise gen.Return(agencies)
def test_DatabaseOperationError(self): try: raise exceptions.DatabaseOperationError( "Testing DatabaseOperationError") except exceptions.DatabaseOperationError: pass