MCPcopy
hub / github.com/scrapy/scrapy / open_spider_async

Method open_spider_async

scrapy/core/engine.py:530–558  ·  view source on GitHub ↗
(self, *, close_if_idle: bool = True)

Source from the content-addressed store, hash-verified

528 return deferred_from_coro(self.open_spider_async(close_if_idle=close_if_idle))
529
530 async def open_spider_async(self, *, close_if_idle: bool = True) -> None:
531 assert self.crawler.spider
532 if self._slot is not None:
533 raise RuntimeError(
534 f"No free spider slot when opening {self.crawler.spider.name!r}"
535 )
536 logger.info("Spider opened", extra={"spider": self.crawler.spider})
537 self.spider = self.crawler.spider
538 nextcall = CallLaterOnce(self._start_scheduled_requests)
539 scheduler = build_from_crawler(self.scheduler_cls, self.crawler)
540 self._slot = _Slot(close_if_idle, nextcall, scheduler)
541 self._start = await self.scraper.spidermw.process_start()
542 if hasattr(scheduler, "open") and (d := scheduler.open(self.crawler.spider)):
543 await maybe_deferred_to_future(d)
544 await self.scraper.open_spider_async()
545 assert self.crawler.stats
546 if argument_is_required(self.crawler.stats.open_spider, "spider"):
547 warnings.warn(
548 f"The open_spider() method of {global_object_name(type(self.crawler.stats))} requires a spider argument,"
549 f" this is deprecated and the argument will not be passed in future Scrapy versions.",
550 ScrapyDeprecationWarning,
551 stacklevel=2,
552 )
553 self.crawler.stats.open_spider(spider=self.crawler.spider)
554 else:
555 self.crawler.stats.open_spider()
556 await self.signals.send_catch_log_async(
557 signals.spider_opened, spider=self.crawler.spider
558 )
559
560 def _spider_idle(self) -> None:
561 """

Calls 11

CallLaterOnceClass · 0.90
build_from_crawlerFunction · 0.90
maybe_deferred_to_futureFunction · 0.90
argument_is_requiredFunction · 0.90
global_object_nameFunction · 0.90
_SlotClass · 0.85
infoMethod · 0.80
send_catch_log_asyncMethod · 0.80
process_startMethod · 0.45
openMethod · 0.45
open_spiderMethod · 0.45