python - Requests 如何中斷請(qǐng)求?
問題描述
python中的requests如何中斷請(qǐng)求呢? 我是多線程并發(fā)去get,但是沒找到停止請(qǐng)求操作,只能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. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?2. macos - 無(wú)法source activate python273. java - butterknife怎么綁定多個(gè)view4. java - 同步/異步與阻塞/非阻塞之間的差異具體是什么?5. javascript - 打算寫一個(gè)c++的node圖像處理模塊,有沒有推薦的c++圖片處理庫(kù)?6. css3 讓圖片變成灰色(filter),但針對(duì)IE11瀏覽器無(wú)效7. android - Genymotion 模擬器可以做屏幕適配檢測(cè)嗎?8. html5 - 前端面試碰到了一個(gè)緩存數(shù)據(jù)的問題,來論壇上請(qǐng)教一下9. html - 非微信官方網(wǎng)頁(yè),將由微信轉(zhuǎn)換為手機(jī)預(yù)覽模式10. 我在導(dǎo)入模板資源時(shí)遇到無(wú)法顯示的問題,請(qǐng)老師解答下

網(wǎng)公網(wǎng)安備