@@ -17,36 +17,32 @@ def __init__(self, settings):
17
17
self .settings = settings
18
18
19
19
def download_request (self , request , spider ):
20
+ return _force_deferred (self ._download_request (request , spider ))
21
+
22
+ def _download_request (self , request , spider ):
20
23
"""Return a deferred for the HTTP download"""
21
24
headers = list ((k .decode ('latin1' ), v .decode ('latin1' ))
22
25
for k , vs in request .headers .items ()
23
26
for v in vs )
24
27
25
- dfd = _force_deferred (
26
- aiohttp .request (
28
+ aioresponse = yield from aiohttp .request (
27
29
method = request .method ,
28
30
url = request .url ,
29
31
data = request .body ,
30
32
allow_redirects = False ,
31
33
headers = headers ,
32
- ))
33
-
34
- def _on_response (aioresponse ):
35
- return _force_deferred (aioresponse .read ()).addCallback (
36
- _on_body , aioresponse = aioresponse )
37
-
38
- def _on_body (body , aioresponse ):
39
- url = request .url
40
- status = aioresponse .status
41
- headers = Headers (
42
- (k .encode ('latin1' ), [v .encode ('latin1' )])
43
- for k , v in aioresponse .headers .items ()
44
34
)
45
- respcls = responsetypes .from_args (headers = headers , url = url )
46
- return respcls (url = url , status = status , headers = headers , body = body ,
47
- flags = [])
48
35
49
- return dfd .addCallback (_on_response )
36
+ body = yield from aioresponse .read ()
37
+ url = request .url
38
+ status = aioresponse .status
39
+ headers = Headers (
40
+ (k .encode ('latin1' ), [v .encode ('latin1' )])
41
+ for k , v in aioresponse .headers .items ()
42
+ )
43
+ respcls = responsetypes .from_args (headers = headers , url = url )
44
+ return respcls (url = url , status = status , headers = headers , body = body ,
45
+ flags = [])
50
46
51
47
52
48
def _force_deferred (coro ):
0 commit comments