|
1 | 1 | # -*- coding: utf-8 -*- |
2 | 2 | import itertools |
| 3 | +from warnings import warn |
3 | 4 | from weakref import WeakKeyDictionary |
4 | 5 |
|
5 | 6 | from scrapy import Request |
@@ -28,11 +29,21 @@ def process_spider_output(self, response, result, spider): |
28 | 29 | parent = self._seen_requests.pop(response.request, None) |
29 | 30 | for x in result: |
30 | 31 | if isinstance(x, Request): |
31 | | - x.meta[HS_PARENT_ID_KEY] = parent |
32 | | - # Remove request id if it was for some reason set in the request coming from Spider. |
33 | | - x.meta.pop(HS_REQUEST_ID_KEY, None) |
| 32 | + self._process_request(x, parent) |
34 | 33 | yield x |
35 | 34 |
|
| 35 | + async def process_spider_output_async(self, response, result, spider): |
| 36 | + parent = self._seen_requests.pop(response.request, None) |
| 37 | + async for x in result: |
| 38 | + if isinstance(x, Request): |
| 39 | + self._process_request(x, parent) |
| 40 | + yield x |
| 41 | + |
| 42 | + def _process_request(self, request, parent): |
| 43 | + request.meta[HS_PARENT_ID_KEY] = parent |
| 44 | + # Remove request id if it was for some reason set in the request coming from Spider. |
| 45 | + request.meta.pop(HS_REQUEST_ID_KEY, None) |
| 46 | + |
36 | 47 |
|
37 | 48 | class HubstorageDownloaderMiddleware: |
38 | 49 | """Hubstorage dowloader middleware. |
|
0 commit comments