我在维护一个比较老的系统,用的 struts2 + hibernate,有一个需求就是根据前端的请求查找数据然后下载 Excel 文件,如果请求字段为空,那么就把今天的所有数据都下载下来。通常情况下,一天的数据不超过 3000 条。
旧系统这么做没什么问题。我接过来这个项目以后要修改一个地方,就是下载的时候要把查询出来的每一条数据对应的两个位置也下载下来,这两个位置信息是不在数据库中的,一个位置需要请求第三方接口,一个位置请求我们公司的另一个系统。
我做的方法也简单粗暴,就是查出来以后,再遍历一遍,每条记录都去请求两次位置信息。几百条数据的时候是没有问题的,但是下载两千多条的时候就出现 504 错误了。
我暂时想不出什么办法了,特来这里请教下各位,多谢!
emmm,可以转变哈思路,参考哈我之前的一个回答,看看适合你不
https://segmentfault.com/q/10...
不过你这个可以考虑空间换时间的方式,如果这些位置信息对应你的数据都是不变的话,可以考虑做个把它们缓存在你这边的数据库里,做一个定时任务,每天半夜去跑,把准备今天下载的数据对应的位置信息先缓存到你本地来,这样到时候再下载文件的时候可能会快很多,而且再才用我那个问题提到的异步方式,用邮件去发,应该可以完全解决你这个问题,不会出现504