파이썬 요청 모듈의 Documentation은 "콜백 함수가 값을 반환하면 전달 된 데이터를 대체한다고 가정합니다. '아무것도 반환하지, 그 밖의 아무 것도 영향을 미치지 않습니다.'파이썬 요청 hook은 예외를 발생시키는 값을 반환합니다.
이제 내 후크 함수에서 값 (int 값)을 반환하려고하는데 예외가 발생합니다. 반환 값이 DOESNOT에 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")
입니다 그리고 여기에 예외 :
http://localhost/index.html
Traceback (most recent call last):
File "/home/talha/ws/test.py", line 85, in <module>
main()
File "/home/talha/ws/test.py", line 72, 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)
AttributeError: 'int' object has no attribute 'raw'
sessions.py @line (446)의 코드는 dispatch_hook..From 소스
후 쿠키를 추출하기 위해 노력하고있다# 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 <module>
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'
무엇 보인다 것은 내가 전체 의사의 응답을 구현해야한다는 것입니다?
내 기대는 콜백이받는 것과 동일한 유형을 반환해야하므로 의도적으로 수정 된 "응답"을 반환합니다. 참고 : 저는 파이썬 요청 사용자가 아닙니다. 이것은 직관입니다. –
아무런 문제가 없습니다. 당신은 응답 객체를받습니다. 그래서 당신이 반환하는 것은 그 응답 객체를 대체 할 것입니다. 코드의 나머지 부분은 여전히 대체 객체가 응답 객체가 될 것으로 기대하며 실제로이를 명시해야합니다. –