现状

跟淘宝或天猫做商品对接的时候,需用到淘宝api提供taobao.picuture.get接口获取淘宝图片空间的商品图片的url,我们在商品同步之前,首先需要批量通过sku去获取所有sku的图片链接,比如一个颜色sku就可能需要去get到如下这么多图片类型

,我们这边业务同事一般都是批量输入sku去get图片链接,假设一次性20个sku获取图片链接 ,每个sku需要get大约15张图片,大概就需要调用15*20 = 300 次get图接口,这样导致每次批量get图片耗费的时间非常多,这样会影响业务同事的体验,浪费没必要的时间,为了减少get图过程中所耗费的时间,有两种思路

1、采用多线程get图

2、天猫支持批量get图片接口

多线程get图

通过实现Callable接口创建get图片线程对象,核心代码如下

 /***
     * 根据13位sku获取后台图片(采用Callable多线程,分批次调用get图片接口,每次调用接口数:11)* @param sku* @return*/public List<Picture> getTaobaoPicturesByTitle(String sku){//创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(TppConfig.DEFAULT_THREAD_MAX); List<Picture> list = new ArrayList<Picture>();List<String> titles = getFixedTitleList(sku);List<List<String>> titleList = new ArrayList<List<String>>();if(titleList.size() > 0){for(List<String> tList:titleList){List<Future> futures =  new ArrayList<Future>();for(String title:tList){Callable callable = new PictureGetCallable(title,storeCode); //执行任务并获取Future对象 Future future = pool.submit(callable); //从Future对象上获取任务的返回值,并输出到控制台 futures.add(future);}if(futures.size() > 0){for(Future f:futures){try {list.addAll( (List<Picture>)f.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}}futures.clear();}}//关闭线程池 pool.shutdown(); return list;}/***** 内部类,get图片线程类* @author youqiang.xiong**/public static class PictureGetCallable implements Callable<Object>{private String title;private String storeCode;HashMap<String, String> condMap = new HashMap<String, String>();public List<Picture> list = new ArrayList<Picture>();public PictureGetCallable(String title,String storeCode){this.title = title;this.storeCode = storeCode;}@Overridepublic Object call() throws Exception {try{condMap.clear();condMap.put("title", title);TaobaoPictureListGet taobaoPictureListGet = new TaobaoPictureListGetImpl(storeCode);if(taobaoPictureListGet!=null){List<Picture> pictures = taobaoPictureListGet.getTaobaoPictures(condMap);if(pictures.size() > 0 ){list.addAll(pictures);}}}catch(Exception ex){log.error("PictureGetCallable() title:"+title+" error.", ex);}return list;}}

多线程的应用(批量调用淘宝接口get图片)相关推荐

  1. 调用淘宝接口有每IP数量/时间限制-负载均衡解决

    其实标题不太准确,不过原理是一样. 这里要解决的问题是:调用淘宝接口有每IP数量/时间限制,但是我们的调用量较大,有可能超过这个限制,从而导致可能被淘宝屏蔽一小段时间.为了解决这个问题,我们需要用多个 ...

  2. PYTHON实现批量下载淘宝详情页图片

    1.打开某件宝贝的详情页地址url 例如下图这款windows10鼠标垫宝贝,url地址为下图红色框框里! 注意:目前此代码不支持天猫详情页图片下载.可以关注我后续的文章,也可以自行研究,原来一样.只 ...

  3. 调用淘宝接口查询IP所在地

    #!/usr/bin/python # -*- coding: UTF-8 -*- import requests IP = raw_input("请输入:"); def chec ...

  4. 淘宝接口 TopAPi(转)

    本文转自delphi盒子:http://www.2ccc.com/article.asp?articleid=6121 感谢作者 废话先不说, 先用D2007写一个Demo, 演示一下调用淘宝的接口, ...

  5. 淘宝接口 TopAPi

    演示一下调用淘宝的接口,让大家心里有个数, 很简单,新建一个工程,拖一个IDHttp,Button和Memo到窗体上去 然后在这个Button的OnClick事件中写入如下代码: [delphi] v ...

  6. Delphi版本的淘宝接口(TopAPI)开发

    博文地址: http://blog.csdn.net/delphiteacher/article/details/8168741 Delphi版本淘宝接口控件下载地址(支持D7,D2007,D2010 ...

  7. 【转】淘宝接口API开发 taobao代购系统API接口调用

    此文章于 2017-05-03发布 本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164& ...

  8. 淘宝接口API开发-taobao代购系统API接口调用

    本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...

  9. 淘宝接口API开发 taobao代购系统API接口调用

    本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...

最新文章

  1. C语言学习笔记--动态库和静态库的使用
  2. python 零矩阵
  3. goLand工程结构管理
  4. easyui中的datetimebox 只显示年月日_设置Win10任务栏显示星期几方法
  5. oracle经常开关好吗,频繁开关机对电脑有什么影响吗?
  6. 使用Java 8流遍历递归数据结构
  7. Httputils请求网络数据
  8. 组合体计算机绘图的实验原理,机械制图及计算机绘图
  9. 即时聊天:前端react+极光IM
  10. python实现图片拼接长图_用Python实现长截图拼接
  11. html js点赞功能实现,利用浏览器的JS代码实现QQ空间自动点赞功能
  12. 2010十大杰出IT博客大赛50强之李晨光
  13. 第1关:MapReduce综合应用案例 — 电信数据清洗
  14. 小招喵喜欢吃喵粮(贪心、二分查找)
  15. win10专业版进不了安全模式 win10专业版安全模式怎么进
  16. 2020牛客寒假算法基础集训营1 G eli和字符串
  17. 京东商品列表API接口-(item_search-按关键字搜索京东商品API接口),京东API接口
  18. 比较详细的HC-SR04超声波传感器数据及机器人避障的应用方法
  19. 仿牛客社区项目笔记-帖子模块(核心)
  20. Ubuntu18.04 在线安装显卡驱动

热门文章

  1. Android实现二维码登录的简单实现
  2. java之I/O流【一】
  3. mysql select lock in share mode_深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
  4. 计算机考研856学校,2017年中央民族大学信息工程学院856计算机学科专业综合之数据结构考研题库...
  5. [.Net精华技术贴] 传智论坛2013年.Net经验分享版块精华帖汇总
  6. 关于connection holder is null的个人解决方案实践
  7. 关于购买商标,有哪些注意事项?
  8. 吃鸡专用计算机,死得不明不白 推荐你一台吃鸡专用显示器
  9. OCZ内部RAID 0固态硬盘性能实测
  10. ES6增加了扩展运算符: ... 三个点是ES几的