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. 百度云加速正常 自己搭建的NGINX就出現400 本妹子求大神2. javascript - 微信音樂分享3. vue.js - vue+webpack+vue-router 部署到nginx服務器下,非根目錄,前后端怎樣配置文件?4. 在ios下 微信打開iframe鏈接的頁面時 在微信里長按無法識別二維碼5. javascript - 我寫的href跳轉地址不是百度,為什么在有的機型上跳轉到百度了,有的機型跳轉正確6. javascript - 按鈕鏈接到另一個網址 怎么通過百度統計計算按鈕的點擊數量7. html5 - H5移動端UC瀏覽器的,跳轉下一個頁面,下一個頁面input輸入框獲取焦點后,會帶出上一頁的內容?8. vue.js - vue apache 代理設置9. CSS3動畫的硬件加速的問題。。10. nginx - 關于vue項目部署到ngnix后出現的問題
