爬蟲學習筆記之為什么要設置超時時間,怎么設置(使用selenium)


  一個程序沒有設置超時時間,就可以說是一段有缺陷的代碼。

  讀取超時指的就是客戶端等待服務器發送請求的時間。(特定地,它指的是客戶端要等待服務器發送字節之間的時間。在 99.9% 的情況下這指的是服務器發送第一個字節之前的時間)。

  簡單的說,連接超時就是發起請求連接到連接建立之間的最大時長,讀取超時就是連接成功開始到服務器返回響應之間等待的最大時長。

 

***************************************************************************************************************************************************

  頁面元素等待處理。

顯性等待:
EC.presence_of_element_located((By.ID,"acdid"))
util.browser.find_element_by_id("acdid").click()
強制等待:
可以用sleep(3),但是不是最好的方法

隱性等待:# 隱性等待,最長等30秒
driver.implicitly_wait(30) # 隱性等待和顯性等待可以同時用,但要注意:等待的最長時間取兩者之中的大者


******************************************************************************************************************************************

   來自靈魂的拷問1:沒有設置超時時間,為什么沒有什么影響呢?

  即使你不設置超時時間,在正常情況下,一個HTTP請求總是會返回結果,即使可能會耗時較長。對於一個負載不高的服務來說,潛在的問題沒有暴露出來。

 


  來自靈魂的拷問2:什么情況下,沒有設置超時時間會造成嚴重的影響呢?

  (1)與用戶操作相關的接口,如果不設置超時時間,將會出現長時間的無響應,嚴重影響用戶體驗。

  (2)負載很高的系統,因為大量調用耗時長的接口,導致性能急劇下降,從而影響其他正常的業務
  (3)某些情況下,HTTP請求可能永遠都得不到響應,那么這部分系統資源就一直被占用,直到系統奔潰。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM