解决:Springboot视频接口报大量的ClientAbortException找不到原因

浏览器有自己的缓冲策略,比如视频接口吐出了100MB的视频数据,浏览器可不会全部拿走,而是按需去拿,

举个例子,浏览器拿的视频数据够看半分钟的,就停止读取数据了,但是http连接并未断开,因为这半分钟看完还要再去读取数据。

springboot视频接口向响应流写入100MB数据,并不是直接写入了http响应体中返回,而是写入了一个缓冲区,缓冲区再一点点输出。如下就是缓冲区的那个类:

org.apache.catalina.connector.OutputBuffer

调用了里面这个方法,先检测连接没断开,然后检测缓冲区还有数据,最后响应输出数据。

浏览器停止接收时,springboot发现输出不了数据,主动抛出了这个异常。 

这样做可能是希望让上层应用自己拦截处理,但目前这个视频播放场景,因为有了缓冲区,所以该异常不会导致视频数据丢失,不影响视频播放,不需要关注这个异常,因此建立全局的异常拦截器屏蔽就好了。


@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {@ExceptionHandler(ClientAbortException.class)public void handleClientAbortException(ClientAbortException e){}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/81634.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装ubuntu 18.04 系统(1)——制作系统安装U盘

https://rufus.ie/zh/ 下载该软件,准备制作启动盘下载自己想要的镜像,http://mirrors.163.com/ubuntu-releases/18.04/, 我选择的是ubuntu-18.04.6-live-server-amd64.iso 因为,科研写程序使用,不需要桌面版本。开始制…

pytorch Stream 多流处理

CUD Stream https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions 中指出在kenel的调用函数中最后一个可选参数表示该核函数处在哪个流之中。 - 参数Dg用于定义整个grid的维度和尺寸,即一个grid有多少个block。为dim3类型。…

深入探索C++模板:从基础到高级应用

目录 一、 泛型编程 1.1 为什么需要泛型编程? 二、模板 2.1 概念 2.2 函数模板 2.2.1 概念 2.2.2 语法 2.2.3 示例 2.2.4 模板实例化 隐式实例化 显示实例化 2.2.5 模板参数的匹配原则 2.3 类模板 2.3.1 概念 2.3.2 语法 2.3.3 示例 2.3.4 注意事项…

Html页面连线工具

在项目中遇了一个需要连线配置的功能。该功能引用了 bootstrap、layui 、svg-line等插件 下载链接 lixhttps://download.csdn.net/download/dongyan3595/88168121

用Python获取链家二手房房源数据,做可视化图分析数据

前言 数据采集的步骤是固定: 发送请求, 模拟浏览器对于url地址发送请求获取数据, 获取网页数据内容 --> 请求那个链接地址, 返回服务器响应数据解析数据, 提取我们需要的数据内容保存数据, 保存本地文件 所需模块 win R 输入cmd 输入安装命令 pip install 模块名 (如果你…

机器学习竞赛、CV/NLP 竞赛入门没人带解决办法

我的第一个AI竞赛是在Datawhale夏令营的帮助下参加的。 一周左右的夏令营,让我从环境都配不好的小白到对pytorch基本入门。 夏令营的氛围督促我赶紧学习,赶紧进步;夏令营群里的大佬推荐的入门视频让我pytorch入门。 了解datawhale是通过b站…

github 无语的问题,Host does not existfatal: Could not read from remote repository.

Unable to open connection: Host does not existfatal: Could not read from remote repository. image.png image.png image.png Please make sure you have the correct access rights and the repository exists. 如果github desktop和git pull 和git clone全部都出问题了&…

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出,pytest的参数有很多,下面是归纳一些常用的参数: -s:输出调试信息,包括print打印的信息。 -v:显示更详细的信息。 …

手眼标定眼在手上

1、为什么要用手眼标定(在贴片机上定位已调通) 参考手眼标定特别是眼在手上在网上的文章很多,但很多在实际中调试不通。在定位时候,往往希望相机能返回的是机械的世界坐标,而不是相机的的图像坐标。从而间接计算出相机…

【移动机器人运动规划】03 —— 基于运动学、动力学约束的路径规划(一)

文章目录 前言相关代码整理:相关文章: 介绍什么是kinodynamic?为什么需要kinodynamic?模型示例unicycle model(独轮车模型)differential model(两轮差速模型)Simplified car model (简化车辆模型…

机器学习参数调优

手动调参 分析影响模型的参数,设计步长进行交叉验证 我们以随机森林为例: 本文将使用sklearn自带的乳腺癌数据集,建立随机森林,并基于泛化误差(Genelization Error)与模型复杂度的关系来对模型进行调参&…

TOPIAM 社区版 1.0.0 发布,开源 IAM/IDaaS 企业身份管理平台

文章目录 产品概述系统架构功能列表管理端门户端 技术架构后续规划相关地址 ​Hi,亲爱的朋友们,今天是传统 24 节气中的立秋,秋天是禾谷成熟、收获的季节。经过长时间优化和迭代,TOPIAM 企业身份管控平台也迎来了当下的成长和收获…

PWNlab靶机渗透

安装靶机 下载地址:https://www/vulnhub.com/entry/pwnlab-init,158/ 信息收集: 收集靶机ip地址,由于搭建在本地使用kali自带命令 arp-scan -l nmap 扫描端口,服务 nmap -sV -p 1-65535 -A 靶机ip地址 漏洞探测 访问80端口地…

kubernetes 集群命令行工具 kubectl

1、kubectl 概述 kubectl是一种命令行工具,用于管理Kubernetes集群和与其相关的资源。通过kubectl,您可以查看和管理Pod、Deployment、Service、Volume、ConfigMap等资源,也可以创建、删除和更新它们。 kubectl还提供了许多其他功能&#x…

监控Kafka的关键指标

Kafka 架构 上面绿色部分 PRODUCER(生产者)和下面紫色部分 CONSUMER(消费者)是业务程序,通常由研发人员埋点解决监控问题,如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKE…

LabVIEW开发高压配电设备振动信号特征提取与模式识别

LabVIEW开发高压配电设备振动信号特征提取与模式识别 矿用高压配电设备是井下供电系统中的关键设备之一,肩负着井下供配电和供电安全的双重任务,其工作状态直接影响着井下供电系统的安全性和可靠性。机械故障占配电总故障的70%。因此,机械故…

24届近5年江南大学自动化考研院校分析

今天给大家带来的是江南大学控制考研分析 满满干货~还不快快点赞收藏 一、江南大学 学校简介 江南大学(Jiangnan University)是国家“双一流”建设高校,“211工程”、“985工程优势学科创新平台”重点建设高校,入选…

Django架构图

1. Django 简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身…

Vue2源码分析-day2

实现数组的响应式原理 首先我们在index.html中定义一个数组,并且打印实例 const vm new MVue({data() {return {name: "zhangsan",age: "16",hobby:[zhangsan,lisi]}} }) console.log(vm);我们会发现定义的数组每一项都有get和set方法虽然数…

线程池-手写线程池C++11版本(生产者-消费者模型)

本项目是基于C11的线程池。使用了许多C的新特性,包含不限于模板函数泛型编程、std::future、std::packaged_task、std::bind、std::forward完美转发、std::make_shared智能指针、decltype类型推断、std::unique_lock锁等C11新特性功能。 本项目有一定的上手难度。推…