python requests.request 和session.request区别究竟在哪里

Posted 入门到放弃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python requests.request 和session.request区别究竟在哪里相关的知识,希望对你有一定的参考价值。

def request(method, url, **kwargs):
    """Constructs and sends a :class:`Request <Request>`.

    :return: :class:`Response <Response>` object
    :rtype: requests.Response

    Usage::

      >>> import requests
      >>> req = requests.request(\'GET\', \'https://httpbin.org/get\')
      <Response [200]>
    """

    # By using the \'with\' statement we are sure the session is closed, thus we
    # avoid leaving sockets open which can trigger a ResourceWarning in some
    # cases, and look like a memory leak in others.
    with sessions.Session() as session:
        return session.request(method=method, url=url, **kwargs)

  request.request 源码有一段这样的解释使用了with上下文管理,来确保session被关闭,因此我们可以避免残留socket打开的连接导致的触发资源紧张警告在某些情况下,并且还可以防止内存泄漏在另一方面。

 

再session.request

 

 在最下面还为我们封装了一层session实例对象,但是它在不久的将来会过期,做了一个上下文管理器作用:

 

 所以你可以通过两种方法区调用request库的session:

import requests
#method1
new_session=requests.session()
new_session.request()

# method2 
from requests import Session
Session().request()

 可以从源码对比request.request是基于上下文管理器做的自动关闭session,而session.request基于http长连接sokcet,保留历史请求的状态,这就对依赖于登陆状态的二次请求提供了很便利的途径,居于token,可以借助python reflect也就是反射实现token读取,共享

 技术群:

 

以上是关于python requests.request 和session.request区别究竟在哪里的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫开发 -------requests模块

python—网络爬虫(Requests库主要方法解析)

Python爬虫之Requests库入门

Python之Requests库的7个主要方法

Python爬虫-requests库数据挖掘

Python爬虫-requests库数据挖掘