python中关于requests里的timeout()

https://blog.csdn.net/weixin_44642304/article/details/90211574

https://www.cnblogs.com/zhaoyang110/p/12033921.html

timeout(超时)
首先是:为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间

其次是:连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是 connect() ),Request 会等待的秒数。一个很好的实践方法是把连接超时设为比 3 的倍数略大的一个数值,因为 TCP 数据包重传窗口 (TCP packet retransmission window) 的默认大小是 3。

在爬虫代理这一块我们经常会遇到请求超时的问题,代码就卡在哪里,不报错也没有requests请求的响应。

通常的处理是在requests.get()语句中加入timeout限制请求时间

=================

timeout传入一个元组(3,7)第一位是connect连接的超时时间,第二位是read读取的超时时间
如果只写一个的话,就是连接和读取的timeout总和

=================

s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))
 

try:
  r = s.get('http://www.google.com.hk', timeout=5)
  return r.text
except requests.exceptions.RequestException as e:
  print(e)

max_retries 为最大重试次数,重试3次,加上最初的一次请求,一共是4次,所以上述代码运行耗时是20秒而不是15秒

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python requests的post方法可以设置超时时间,如果请求超时,则会抛出Timeout异常。可以通过以下方式设置超时时间: ```python import requests url = 'http://example.com' data = {'key': 'value'} try: response = requests.post(url, data=data, timeout=5) print(response.text) except requests.exceptions.Timeout: print('请求超时') ``` 上述代码timeout参数设置为5,表示请求超过5秒就会超时。如果请求超时,则会抛出requests.exceptions.Timeout异常。 ### 回答2: Python requests post timeout是指在使用Python requests发送HTTP POST请求时,设置请求超时时间。由于网络请求不稳定或目标服务器响应缓慢等原因,如果没有设置超时时间,请求可能会一直等待或阻塞,影响程序的执行效率和用户体验。因此在使用Python requests进行HTTP POST请求时,设置请求超时时间是一个很好的习惯。 Python requests设置请求超时时间的方法是通过timeout参数来实现。timeout参数默认为None,表示请求不进行超时限制。如果需要设置超时时间,可以通过timeout参数传入一个数值来指定超时时间,例如: ```python import requests response = requests.post(url, data=data, timeout=5) ``` 上述代码设定了请求超时时间为5秒钟,如果发生网络请求超时或目标服务器响应时间超过5秒钟,请求将会断并返回异常。 需要注意的是,设置timeout参数时需要考虑网络环境和目标服务器的响应时间,设置过短的超时时间可能会导致请求失败,而设置过长的超时时间则会影响程序的执行效率。因此,合理设置超时时间是一个需要不断调整的过程。同时,在网络请求出现超时需要捕获异常并进行适当的处理,例如重试请求或返回错误提示。 ### 回答3: "Python requests post timeout"指的是在使用Python requests模块进行post请求时,设置一个超时时间,如果请求超时,则会返回一个异常。通常情况下,我们需要设置请求超时时间来避免请求过程一直等待,导致程序阻塞的情况。 requests模块提供了一个timeout参数,可以用来设置请求超时时间,其单位为秒。当请求时间超过timeout所设定的时间时,requests会抛出一个timeout异常。 例如,我们可以使用如下代码来进行post请求,并设置请求超时时间为5秒: ```python import requests url = 'http://example.com' data = {'key1': 'value1', 'key2': 'value2'} try: response = requests.post(url, data=data, timeout=5) print(response.text) except requests.exceptions.Timeout: print("Request timeout") ``` 上述代码,我们将url和参数以字典形式传入requests.post方法,同时设定timeout=5,表示请求超时时间为5秒。如果请求在5秒内返回结果,则会输出响应内容;如果请求超时,则会输出"Request timeout"。 当我们进行requests.post请求时,不设置timeout参数,请求将会一直等待服务器的响应,直至超时时间到达。如果我们的程序需要快速响应用户请求或者处理大量的请求,那么就要谨慎设置请求超时时间,以避免请求被无故地挂起或阻塞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值