【问题不好描述标题起的意义不明,请大神点击进来看详情】请求时间过长导致的问题
发布于 6 年前 作者 zhangjh 2762 次浏览 最后一次编辑是 5 年前 来自 问答

这个问题不是很好描述,大概说一下 我在点击一个按钮后会发出一个请求去后台执行一条命令,该命令在一段时间运行后返回运行是否成功的状态。 问题在于该命令操作比较耗时,所以现在遇到的问题是,命令发出后,后台在运行没结束还未返回时,请求貌似由于长时间未得到返回结果会重试一次,这样就导致了命令重复了。

untitled2.png 从上述截图可以看出来,一个runCase请求,由于长时间未返回,导致运行命令重复了。。 我觉得貌似可以增加请求超时,因此尝试了connect-timeout,将超时设置为1800s,不过貌似没什么用,还是一会儿没返回后就再次发送后台命令了。。 不知道坛里有没有人遇到过这种问题?希望大家给点经验

3 回复

给你个思路吧。。

按钮按下 请求runCase runCase返回res.end(); 前端收到end信号,进入一个timeout(60*1000) timeout里封装另一个请求 runCaseResult runCase结束后,将统计信息存在一个global变量里 runCaseResult 去取

结贴。 最终还是曲线救国了,类似一楼说的方法,请求后直接就返回了,这样首先保证不会出现请求运行时间长造成响应超时,没有响应超时也就不会重试造成重复请求后台命令。后台任务在运行完后将运行结果和状态写入数据库。 然后前端页面设置定时器,每隔1分钟去查询一下数据库状态,根据状态改变页面上任务的运行结果。

@MiguelValentine @zhangjh 确实啊,http 不适合耗时请求。该拆成异步的就拆吧。

回到顶部