python - 为所有请求设置请求默认配置
问题描述
我想为所有请求设置请求默认配置,所以不要这样做:
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()
推荐阅读
- regex - 正则表达式:匹配逗号分隔值的无符号整数值(有效值:仅 0 到 65535)
- java - 不能使用 split() 方法
- python - Kafka Consumer:如何在 Python 中读取特定的 Avro 字段?
- ansible - 如何运行某些类型的 Ansible 任务(无标签)
- node.js - 用来自 mongodb 的数据填充字符串
- php - MySQL UPDATE 基于 2 个 AJAX 数据参数 ($_POST)?
- qt - 移除 Qt Online-Installer 组件
- sql-server - 不同数据库中的相同用户名具有不同的登录名
- google-cloud-storage - 授予权限以检查请求者的计算主机名
- java - Hibernate:检索@OneToMany 关联是否比检索@ElementCollection 列表更快?