<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def send(self, sql, parse_json=True, do_post=True, format=None, **request_args):
 """ Executes SQL query in a CARTO server :param sql: The SQL :param parse_json: Set it to False if you want raw reponse :param do_post: Set it to True to force post request :param format: Any of the data export formats allowed by CARTO's SQL API :param request_args: Additional parameters to send with the request :type sql: str :type parse_json: boolean :type do_post: boolean :type format: str :type request_args: dictionary :return: response data, either as json or as a regular response.content object :rtype: object :raise: CartoException """

        try:
            params = {'q': sql}
            if format:
                params['format'] = format
                if format not in ['json', 'geojson']:
                    parse_json = False

            if request_args is not None:
                for attr in request_args:
                    params[attr] = request_args[attr]

            if len(sql) < MAX_GET_QUERY_LEN and do_post is False:
                resp = self.auth_client.send(self.api_url,
                                             'GET',
                                             params=params)
            else:
                resp = self.auth_client.send(self.api_url, 'POST', data=params)

            return self.auth_client.get_response_data(resp, parse_json)
        except CartoRateLimitException as e:
            raise e
        except Exception as e:
            raise CartoException(e)