为所有请求设置请求默认配置



我想为所有请求设置请求默认配置,所以不需要这样做:

requests.get(url, headers={...}, timeout=..., proxies=...)

我只是做

requests.get(url)

我确实搜索过它,但没有找到解决方案,我可以考虑将请求扩展到这样的类:

import requests
class CustomRequests:
def __init__(self, **kwargs):
for k, v in kwargs.items():
setattr(self, k, v)

def __call__(self, requests_object, *args, **kwargs):
return requests_object(*args, **kwargs, **self.__dict__)

可以这样使用:

Req = CustomRequests(headers={'foo': 'bar'}, proxies={'http': 'baz'}, timeout=15)
print(Req(requests.get, 'https://github.com').status_code)

200

这听起来像是一个绕过这一点的肮脏黑客,或者不是吗?有更好的解决方案吗?

提前谢谢。

如果你不需要使用会话,例如你只提出一个请求,你可以使用部分

from functools import partial
requests_get = partial(
requests.get,
headers=dict(),
timeout=(0.15, 0.15),
proxies=[]
)
def some_func(url):
r = requests_get(url)
r.raise_for_status()
return r.json()

最新更新