假设我有一个像tableauserverclient这样的库,它使用了请求库中的方法。
现在说我在执行get / post方法时需要设置代理或ignoreSSL。直接用python请求调用这些方法非常简单,但是由于tableauserverclient库调用了这些方法,因此我通常必须更新外部库的源代码才能设置配置。
有没有办法在我的外部库中全局设置请求模块的配置?
答案 0 :(得分:1)
您可以使用包装函数覆盖requests.request
,该包装函数在调用实际的proxies
函数之前将缺省值分配给verify
和requests.request
参数:
import requests
import inspect
def override(self, func, proxies, verify):
def wrapper(*args, **kwargs):
bound = sig.bind(*args, **kwargs)
bound.apply_defaults()
bound.arguments['proxies'] = bound.arguments.get('proxies', proxies)
bound.arguments['verify'] = bound.arguments.get('verify', verify)
return func(*bound.args, **bound.kwargs)
sig = inspect.signature(func)
return wrapper
requests.request = override(
requests.request,
proxies={'http': 'http://example-proxy.com', 'https': 'http://example-proxy.com:1080'},
verify=False
)