def update_app_server_group_port(self, blb_id, sg_id, port_id,
                                     health_check=None,
                                     health_check_port=None,
                                     health_check_urlpath=None,
                                     health_check_timeout_insecond=None,
                                     health_check_interval_insecond=None,
                                     health_check_down_retry=None,
                                     health_check_up_retry=None,
                                     health_check_normal_status=None,
                                     client_token=None,
                                     config=None):
        """
        update server group for the specified LoadBalancer,
        support batch add

        :param blb_id:
            id of LoadBalancer
        :type blb_id:string

        :param sg_id:
            id of the server group
        :type sg_id:string

        :param port_id:
            The id of the server group port to be updated
        :type port_id:string

        :param health_check:
            Health check protocol
        :value 'HTTP' or 'TCP',default:'HTTP'
        :type health_check: string

        :param health_check_port:
            Health check port, the default is the same as port
        :type health_check_port: int

        :param health_check_urlpath:
            Health check URI, default '/'.
            Effective when the health check protocol is "HTTP"
        :type health_check_urlpath: string

         :param health_check_timeout_insecond:
            Health check timeout (unit: second)
        :value 1-60, default: 3
        :type health_check_timeout_insecond: int

        :param health_check_interval_insecond:
            Health check interval (unit: second)
        :value 1-10, default: 3
        :type health_check_interval_insecond: int

        :param health_check_down_retry:
            The unhealthy down retry, that is, how many consecutive health
            check failures, shields the backend server.
        :value 2-5, default: 3
        :type health_check_down_retry: int

        :param health_check_up_retry:
            Health up retry, that is, how many consecutive health checks
            are successful, then re-use the back-end server
        :value:2-5, default: 3
        :type health_check_up_retry: int

        :param health_check_normal_status:
            The HTTP status code when the health check is normal supports
            a combination of five types of status codes,
            such as "http_1xx|http_2xx", Effective when the health check
            protocol is "HTTP"
        :value default: http_2xx|http_3xx
        :type health_check_normal_status: string

        :param client_token:
            If the clientToken is not specified by the user, a random String
            generated by default algorithm will be used.
        :type client_token: string

        :param config:
        :type config: baidubce.BceClientConfiguration

        :return:
        :rtype baidubce.bce_response.BceResponse
        """
        path = utils.append_uri(self.version, 'appblb', blb_id, 'appservergroupport')
        params = {}

        if client_token is None:
            params[b'clientToken'] = generate_client_token()
        else:
            params[b'clientToken'] = client_token

        body = {
            'sgId': compat.convert_to_string(sg_id),
            'portId': compat.convert_to_string(port_id)
        }
        if health_check is not None:
            body['healthCheck'] = compat.convert_to_string(health_check)
        if health_check_port is not None:
            body['healthCheckPort'] = health_check_port
        if health_check_urlpath is not None:
            body['healthCheckUrlPath'] = \
                compat.convert_to_string(health_check_urlpath)
        if health_check_timeout_insecond is not None:
            body['healthCheckTimeoutInSecond'] = health_check_timeout_insecond
        if health_check_interval_insecond is not None:
            body['healthCheckIntervalInSecond'] = health_check_interval_insecond
        if health_check_down_retry is not None:
            body['healthCheckDownRetry'] = health_check_down_retry
        if health_check_up_retry is not None:
            body['healthCheckUpRetry'] = health_check_up_retry
        if health_check_normal_status is not None:
            body['healthCheckNormalStatus'] = \
                compat.convert_to_string(health_check_normal_status)

        return self._send_request(http_methods.PUT, path,
                                  body=json.dumps(body), params=params,
                                  config=config)