python - Requests 如何中斷請求?
問題描述
python中的requests如何中斷請求呢? 我是多線程并發(fā)去get,但是沒找到停止請求操作,只能wait線程結(jié)束,我以前用過socket套接字,里面寫個(gè)狀態(tài)停止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)# 消耗了很多時(shí)間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的時(shí)候,還是花了3秒多,如何中斷這3秒?
問題解答
回答1:加一個(gè)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)# 消耗了很多時(shí)間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()
相關(guān)文章:
1. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示2. python bottle跑起來以后,定時(shí)執(zhí)行的任務(wù)為什么每次都重復(fù)(多)執(zhí)行一次?3. javascript - 求幫助 , ATOM不顯示界面!!!!4. 視頻文件不能播放,怎么辦?5. javascript - vue2如何獲取v-model變量名6. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題7. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處8. javascript - 為什么在谷歌控制臺 輸出1的時(shí)候,輸出的1立馬就不見了9. html5 - HTML代碼中的文字亂碼是怎么回事?10. javascript - ios返回不執(zhí)行js怎么解決?
