python callback failed_Python请求钩子返回导致异常的值

在使用Python requests模块时,尝试从回调函数hook返回一个值(例如int)导致异常。文档提到,回调函数返回的值将替换传入的数据。但实际操作中,返回非响应对象会导致问题,如NoneType对象没有'_original_response'属性的错误。目前,返回原始response对象也会引发异常,因为其某些字段初始化为None。解决方案可能涉及创建一个模拟的完整响应对象。
摘要由CSDN通过智能技术生成

python requests模块的Documentation表示for hooks,“如果回调函数返回一个值,则假定它将替换传入的数据。如果函数不返回任何内容,则不会影响其他内容。”

现在我试图从hook函数返回一个值(在我的例子中是int),它抛出一个异常。当返回值是没有为其定义raw()方法的对象时,这在所有情况下都有效。在

这里有一些代码def hook(resp,**kwargs):

print resp.url

return 1

def main()

s = requests.Session()

s.hooks = {"response":hook}

r = s.get("http://localhost/index.html")

以下是例外:

^{pr2}$

代码会话.py@第446行试图从源代码中提取dispatch_hook..之后的cookies# Response manipulation hooks

r = dispatch_hook('response', hooks, r, **kwargs)

# Persist cookies

extract_cookies_to_jar(self.cookies, request, r.raw)

要么文件需要更改,要么需要重新处理。最好的办法是什么?在

[更新]

根据注释,我试图返回基本response对象。结果它也不能以这种方式使用,因为它的一些字段被初始化为None。在

更新代码:def hook(resp, **kwargs):

obj = requests.Response()

return obj

现在引发异常:Traceback (most recent call last):

File "/home/talha/ws/test.py", line 88, in

main()

File "/home/talha/ws/test.py", line 75, in main

r = s.get("http://localhost/index.html")

File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 347, in get

return self.request('GET', url, **kwargs)

File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 335, in request

resp = self.send(prep, **send_kwargs)

File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 446, in send

extract_cookies_to_jar(self.cookies, request, r.raw)

File "/usr/lib/python2.7/site-packages/requests/cookies.py", line 108, in extract_cookies_to_jar

res = MockResponse(response._original_response.msg)

AttributeError: 'NoneType' object has no attribute '_original_response'

看来我必须实现一个完整的伪响应?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值