爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

时间:2024-07-01 16:03:38

  一个程序没有设置超时时间,就可以说是一段有缺陷的代码。

  读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 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请求可能永远都得不到响应,那么这部分系统资源就一直被占用,直到系统奔溃。