(self, item: Any, spider: Spider | None = None)
| 127 | |
| 128 | @_warn_spider_arg |
| 129 | async def process_item(self, item: Any, spider: Spider | None = None) -> Any: |
| 130 | info = self.spiderinfo |
| 131 | requests = arg_to_iter(self.get_media_requests(item, info)) |
| 132 | coros = [self._process_request(r, info, item) for r in requests] |
| 133 | results: list[FileInfoOrError] = [] |
| 134 | if coros: |
| 135 | if is_asyncio_available(): |
| 136 | results_asyncio = await asyncio.gather(*coros, return_exceptions=True) |
| 137 | for res in results_asyncio: |
| 138 | if isinstance(res, BaseException): |
| 139 | results.append((False, Failure(res))) |
| 140 | else: |
| 141 | results.append((True, res)) |
| 142 | else: |
| 143 | results = await cast( |
| 144 | "Deferred[list[FileInfoOrError]]", |
| 145 | DeferredList( |
| 146 | (deferred_from_coro(coro) for coro in coros), consumeErrors=True |
| 147 | ), |
| 148 | ) |
| 149 | return self.item_completed(results, item, info) |
| 150 | |
| 151 | async def _process_request( |
| 152 | self, request: Request, info: SpiderInfo, item: Any |
no test coverage detected