| 455 | |
| 456 | @inlineCallbacks |
| 457 | def _crawl( |
| 458 | self, crawler: Crawler, *args: Any, **kwargs: Any |
| 459 | ) -> Generator[Deferred[Any], Any, None]: |
| 460 | self.crawlers.add(crawler) |
| 461 | d = crawler.crawl(*args, **kwargs) |
| 462 | self._active.add(d) |
| 463 | failed = False |
| 464 | try: |
| 465 | yield d |
| 466 | except Exception: |
| 467 | failed = True |
| 468 | raise |
| 469 | finally: |
| 470 | self.crawlers.discard(crawler) |
| 471 | self._active.discard(d) |
| 472 | self.bootstrap_failed |= not getattr(crawler, "spider", None) or failed |
| 473 | |
| 474 | def stop(self) -> Deferred[Any]: |
| 475 | """ |