在使用会话时,似乎每次都需要提供完整的URL,例如
session = requests.Session()
session.get('http://myserver/getstuff')
session.get('http://myserver/getstuff2')
这有点乏味。有什么方法可以做到:
session = requests.Session(url_base='http://myserver')
session.get('/getstuff')
session.get('/getstuff2')
这个功能已经在论坛上被问过几次了1,2,3。如here所述,首选的方法是子类化,如下所示:
您只需如下使用:
请求工具带.sessions.BaseUrlSession https://github.com/requests/toolbelt/blob/f5c86c51e0a01fbc8b3b4e1c286fd5c7cb3aacfa/requests_toolbelt/sessions.py#L6
注意:这使用标准库中的urljoin。当心urljoin的行为。
或
您可以将
request.Session
子类化并重载其__init__
和request
方法,如下所示:然后可以在代码中使用子类而不是
requests.Session
:此外,您还可以对
requests.Session
进行修补,以避免修改现有的代码库(此实现应100%兼容),但请确保在任何代码调用之前进行实际修补requests.Session()
:然后:
相关问题 更多 >
编程相关推荐