Move reactor installation into Crawler.crawl().

This commit is contained in:
Andrey Rakhmatullin 2023-09-05 19:43:08 +04:00
parent 69282c5318
commit df112a3996
1 changed files with 18 additions and 15 deletions

View File

@ -104,20 +104,7 @@ class Crawler:
crawler=self,
)
reactor_class: str = self.settings["TWISTED_REACTOR"]
event_loop: str = self.settings["ASYNCIO_EVENT_LOOP"]
if init_reactor:
# this needs to be done after the spider settings are merged,
# but before something imports twisted.internet.reactor
if reactor_class:
install_reactor(reactor_class, event_loop)
else:
from twisted.internet import reactor # noqa: F401
log_reactor_info()
if reactor_class:
verify_installed_reactor(reactor_class)
if is_asyncio_reactor_installed() and event_loop:
verify_installed_asyncio_event_loop(event_loop)
self._init_reactor = init_reactor
self.crawling: bool = False
self.spider: Optional[Spider] = None
@ -132,8 +119,24 @@ class Crawler:
try:
self.spider = self._create_spider(*args, **kwargs)
self.spider.update_settings(self.settings)
self.settings.freeze()
reactor_class: str = self.settings["TWISTED_REACTOR"]
event_loop: str = self.settings["ASYNCIO_EVENT_LOOP"]
if self._init_reactor:
# this needs to be done after the spider settings are merged,
# but before something imports twisted.internet.reactor
if reactor_class:
install_reactor(reactor_class, event_loop)
else:
from twisted.internet import reactor # noqa: F401
log_reactor_info()
if reactor_class:
verify_installed_reactor(reactor_class)
if is_asyncio_reactor_installed() and event_loop:
verify_installed_asyncio_event_loop(event_loop)
self.extensions: ExtensionManager = ExtensionManager.from_crawler(self)
self.settings.freeze()
self.engine = self._create_engine()
start_requests = iter(self.spider.start_requests())