我想为所有请求设置请求默认配置,所以不需要这样做:
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()