多线程的应用(批量调用淘宝接口get图片)
现状
跟淘宝或天猫做商品对接的时候,需用到淘宝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图片)相关推荐
- 调用淘宝接口有每IP数量/时间限制-负载均衡解决
其实标题不太准确,不过原理是一样. 这里要解决的问题是:调用淘宝接口有每IP数量/时间限制,但是我们的调用量较大,有可能超过这个限制,从而导致可能被淘宝屏蔽一小段时间.为了解决这个问题,我们需要用多个 ...
- PYTHON实现批量下载淘宝详情页图片
1.打开某件宝贝的详情页地址url 例如下图这款windows10鼠标垫宝贝,url地址为下图红色框框里! 注意:目前此代码不支持天猫详情页图片下载.可以关注我后续的文章,也可以自行研究,原来一样.只 ...
- 调用淘宝接口查询IP所在地
#!/usr/bin/python # -*- coding: UTF-8 -*- import requests IP = raw_input("请输入:"); def chec ...
- 淘宝接口 TopAPi(转)
本文转自delphi盒子:http://www.2ccc.com/article.asp?articleid=6121 感谢作者 废话先不说, 先用D2007写一个Demo, 演示一下调用淘宝的接口, ...
- 淘宝接口 TopAPi
演示一下调用淘宝的接口,让大家心里有个数, 很简单,新建一个工程,拖一个IDHttp,Button和Memo到窗体上去 然后在这个Button的OnClick事件中写入如下代码: [delphi] v ...
- Delphi版本的淘宝接口(TopAPI)开发
博文地址: http://blog.csdn.net/delphiteacher/article/details/8168741 Delphi版本淘宝接口控件下载地址(支持D7,D2007,D2010 ...
- 【转】淘宝接口API开发 taobao代购系统API接口调用
此文章于 2017-05-03发布 本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164& ...
- 淘宝接口API开发-taobao代购系统API接口调用
本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...
- 淘宝接口API开发 taobao代购系统API接口调用
本次开发接口如下: 淘宝API接口中文名称 api_name 参数 说明 对应官方接口 获得淘宝商品详情 item_get num_iid=39881745164&is_promotion=1 ...
最新文章
- Java数据结构与算法(六) 希尔排序
- TP获取服务器mysql版本
- NOIP2012开车旅行 【倍增】
- Linux 内核将要支持最新龙芯 3A2000/3B2000
- Cookie或将被替换!Chrome工程师提议新型HTTP状态管理协议
- PS学习笔记2-画笔的应用
- 基于IdentityServer的系统对接微信公众号
- SqlServer规则
- 响应式网站与自适应网站比较
- jsf el 表达式_JSF表达式语言– JSF EL
- 日报系统、周报系统如何便捷使用?——领导篇
- java伪代码生成器_java伪代码怎么写
- 安装JDK1.8报错 “当前页面的脚本发生错误”
- JavaScript Window窗口对象
- 3dsmax动画九、弹跳球动画。
- MYSQL 如何得到两个日期间的工作日(不含周六日,节假日)
- android 如何实现弹幕,Android简单实现弹幕效果
- 长江大学c语言程序设计答案,C语言程序设计卷及答案.doc
- 赚流量不赚钱、高退出低留存,水滴的资本故事还能怎样讲?
- transformer学习之多头注意力机制