美文网首页
requests统一超时

requests统一超时

作者: superyn | 来源:发表于2018-05-07 11:34 被阅读0次

之前出现过很多使用requests调用外部http请求很慢的情况,导致自己的系统gunicorn worker心跳阻塞,被master进程直接杀掉。但是之前都没去若requests里通过设置timeout去设置超时。由于这边调用requests请求的情况较多,大概有上百个所以更改的话最好是设置统一超时。

查看网上不少说直接设置socket.setdefaulttimeout就可以,亲测行不通。为什么不行?
1 requests是基于urllib3的,urllib3应该未使用socket.setdefaulttimeout在最后创建socket连接的时候设置默认。
2 使用urllib2的时候用socket.setdefaulttimeout亲测ok,可以生效。

那在使用requests的情况如何统一加超时而不用一个一个去加timeout?如下:

def _patch_requests():
    try:
        from requests.sessions import Session
    except ImportError:
        return
    real_send = Session.send

    def send(self, request, *args, **kwargs):
        if not kwargs.get('timeout'):
            kwargs['timeout'] = 3
        return real_send(self, request, *args, **kwargs)
    Session.send = send

_patch_requests()

只需要在使用requests之前增加上边代码片段即可在后续使用requests的任何时候统一超时生效。

# 在前边增加如上代码段
data = requests.get('http://luckyboyburgers.com/')
print data.text

相关文章

  • requests统一超时

    之前出现过很多使用requests调用外部http请求很慢的情况,导致自己的系统gunicorn worker心跳...

  • requests的使用

    1、安装 2、requests 设置 设置请求头 设置超时时间 auth 认证 3、requests 请求 GET...

  • requests timeout无效,加上setdefaultt

    在requests里,可以通过timeout参数 设置请求超时时间,超时则抛出异常 timeout=(10,30)...

  • [搬运]如何用requests优雅的下载图片?

    问题: requests下载图片太麻烦了,虽然urlretrieve可以一步搞定,但是我想统一使用requests...

  • Requests06.设置超时时间

    如果服务器响应时间过长,导致requests长时间持续请求。可以使用timeout来指定超时时间,当响应超过指定的...

  • RF 接口(自动化)学习

    大基在安在安装Requests库时,卡壳了…… 1. 终端上安装总是报超时。 解决:等公司晚上网速好时,解决的。别...

  • Alamofire 、ObjectMapper封装

    简介: 实现统一设置:超时时长、header、对code码的处理。。统一对url进行了转码。(空格等特殊字符不崩溃...

  • Feign自定义【指定接口】超时时间

    通常整个微服务系统会有统一的接口超时时间设定,但也会存在一些特殊的业务场景,接口需要的较长的超时时间,比如:上传(...

  • 安装设备Mac值获取

    可根据ip或者本地文件获取,但待测试。 安卓端,与ios端的服务器超时重传时间不一致,安卓端不太统一,需要在超时后排重。

  • 爬虫 0&1

    requests.get() 引入requests库 import requests requests.get是在...

网友评论

      本文标题:requests统一超时

      本文链接:https://www.haomeiwen.com/subject/zssmrftx.html