python - Requests 如何中断请求?
问题描述
python中的requests如何中断请求呢? 我是多线程并发去get,但是没找到停止请求操作,只能wait线程结束,我以前用过socket套接字,里面写个状态停止read那种就可以。 requests没找到类似的方法。
import requestsfrom threading import Threadfrom contextlib import closingimport jsonimport timeclass TestT(Thread): def __init__(self):super(TestT, self).__init__()self.s = requests.session() def stop(self):self.p.connection.close()self.s.close() def run(self):t = time.time()self.p = self.s.get(’http://api2.qingmo.com/api/column/tree/one?Pid=8&Child=1’, stream=True, timeout=10)# 消耗了很多时间print time.time()-twith closing(self.p) as r: print time.time()-t data = ’’ for chunk in r.iter_content(4096):data += chunk print json.loads(data)print time.time()-tt = TestT()t.start()t.join(30)t.stop()t.join()
改了下,用了流式读取,但是 get的时候,还是花了3秒多,如何中断这3秒?
问题解答
回答1:加一个IsStop变量,然后return停止线程
import requestsfrom threading import Threadfrom contextlib import closingimport jsonimport timeclass TestT(Thread): def __init__(self):super(TestT, self).__init__()self.s = requests.session()self.IsStop = False def stop(self):self.p.connection.close()self.s.close()self.IsStop = True def run(self):t = time.time()self.p = self.s.get(’http://api2.qingmo.com/api/column/tree/one?Pid=8&Child=1’, stream=True, timeout=10)# 消耗了很多时间print time.time()-twith closing(self.p) as r: print time.time()-t data = ’’ for chunk in r.iter_content(4096):if self.IsStop : return Nonedata += chunk print json.loads(data)print time.time()-tt = TestT()t.start()t.join(30)t.stop()t.join()
相关文章:
1. android-webview - Android 7.0 webview不自动刷新2. javascript - 关于jsp中嵌入js代码的问题3. angular.js - angurlarJS的安卓的微信端中用加载ngCookies会出错的问题4. css3 - 在body中font:13px/1.7em;是什么意思?5. javascript - 网页打印页另存为pdf的代码一个问题6. javascript - 对不同类别的id的物品中的某个字段做权重覆盖,除了直接使用if else语句还能有更优雅便于维护的方式吗?7. javascript - mui.back() 怎么重写,返回到指定的ID页面?8. javascript - 使用easyui出现的dialog 显示不正常问题9. java - idea 的 add as maven project在哪里啊10. javascript - js 二维数组比较大小问题。

网公网安备