MCPcopy
hub / github.com/scrapy/scrapy / process_item

Method process_item

scrapy/pipelines/media.py:129–149  ·  view source on GitHub ↗
(self, item: Any, spider: Spider | None = None)

Source from the content-addressed store, hash-verified

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

Callers 2

scraped_dataMethod · 0.45
start_itemproc_asyncMethod · 0.45

Calls 6

get_media_requestsMethod · 0.95
_process_requestMethod · 0.95
item_completedMethod · 0.95
arg_to_iterFunction · 0.90
is_asyncio_availableFunction · 0.90
deferred_from_coroFunction · 0.90

Tested by

no test coverage detected