开发者社区> 问答> 正文

OSS下载数据不完整,在本机测试下载数据没有问题的,但是上测试机就是导致数据下载到一半就给返回结果了

读取oss中10万条数据,结果读取一半就返回结果了,没有报任何错误,一直以为是网络原因所以加入了各种超时时间,结果也不好用~求大佬帮忙解答

public List getOssData(String path) {

    int HttpResult; // 服务器返回的状态
    List<String> list = new ArrayList<>();
    try
    {
      
        ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
        conf.setConnectionTimeout(20*60 * 1000);
        conf.setSocketTimeout(20*60 * 1000);
        conf.setConnectionRequestTimeout(20*60 * 1000);
        conf.setMaxConnections(3);

        OSS ossClient = new OSSClientBuilder().build(aliyunConfig.getEndpoint(), aliyunConfig.getAccessKeyId(), aliyunConfig.getAccessKeySecret(),conf);

        Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
        URL url = ossClient.generatePresignedUrl(aliyunConfig.getBucketName(), path, expiration);
        // 试图连接并取得返回状态码
        URLConnection urlconn = url.openConnection();
        // 设置连接主机超时时间
        urlconn.setConnectTimeout(10*60 * 1000);
        // 设置从主机读取数据超时
        urlconn.setReadTimeout(10*60 * 1000);
        urlconn.connect();
        HttpURLConnection httpconn =(HttpURLConnection)urlconn;
        HttpResult = httpconn.getResponseCode();
        if(HttpResult != HttpURLConnection.HTTP_OK) {
            logger.error("无法连接到");
        } else {

            CsvReader cr = new CsvReader(urlconn.getInputStream(), ',', Charset.forName("UTF-8"));
            cr.readHeaders();
            String last="";
            while(cr.readRecord()){
                if (cr.getRawRecord().length()!=0){
                    //logger.info(cr.getRawRecord());
                    last=cr.getRawRecord();
                   if(!StringUtils.isEmpty(cr.getRawRecord().trim())) {
                           list.add(cr.getRawRecord().trim());
                   }
                }else{
                    logger.error("下载出错!");
                    break;
                }
            }
            logger.info("解析最后一条数据:{}",last);
            cr.close();
            urlconn.getInputStream().close();
        }
        ossClient.shutdown();
    } catch (Exception e) {
        logger.error("读数据异常", e);
    }
    logger.info("oss解析内容:{} 条",list.size());
    return list;
}

展开
收起
ncvqkbebnz5gq 2021-08-25 10:42:11 901 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载