(
self, result: Response | Failure, request: Request
)
| 215 | |
| 216 | @inlineCallbacks |
| 217 | def enqueue_scrape( |
| 218 | self, result: Response | Failure, request: Request |
| 219 | ) -> Generator[Deferred[Any], Any, None]: |
| 220 | if self.slot is None: |
| 221 | raise RuntimeError("Scraper slot not assigned") |
| 222 | dfd = self.slot.add_response_request(result, request) |
| 223 | self._scrape_next() |
| 224 | try: |
| 225 | yield dfd # fired in _wait_for_processing() |
| 226 | except Exception: |
| 227 | logger.error( |
| 228 | "Scraper bug processing %(request)s", |
| 229 | {"request": request}, |
| 230 | exc_info=True, |
| 231 | extra={"spider": self.crawler.spider}, |
| 232 | ) |
| 233 | finally: |
| 234 | self.slot.finish_response(result, request) |
| 235 | self._check_if_closing() |
| 236 | self._scrape_next() |
| 237 | |
| 238 | def _scrape_next(self) -> None: |
| 239 | assert self.slot is not None # typing |
no test coverage detected