MCPcopy
hub / github.com/scrapy/scrapy / _apply_settings

Method _apply_settings

scrapy/crawler.py:94–152  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

92 install_scrapy_root_handler(self.settings)
93
94 def _apply_settings(self) -> None:
95 if self.settings.frozen:
96 return
97
98 self.addons.load_settings(self.settings)
99 self.stats = load_object(self.settings["STATS_CLASS"])(self)
100
101 lf_cls: type[LogFormatter] = load_object(self.settings["LOG_FORMATTER"])
102 self.logformatter = lf_cls.from_crawler(self)
103
104 self.request_fingerprinter = build_from_crawler(
105 load_object(self.settings["REQUEST_FINGERPRINTER_CLASS"]),
106 self,
107 )
108
109 use_reactor = self.settings.getbool("TWISTED_REACTOR_ENABLED")
110 if use_reactor:
111 # We either install a reactor or expect one to be installed.
112 reactor_class: str = self.settings["TWISTED_REACTOR"]
113 event_loop: str = self.settings["ASYNCIO_EVENT_LOOP"]
114 if self._init_reactor:
115 # We need to install a reactor.
116 # This needs to be done after the spider settings are merged,
117 # but before something imports twisted.internet.reactor.
118 if reactor_class:
119 # Install a specific reactor.
120 install_reactor(reactor_class, event_loop)
121 else:
122 # Install the default one.
123 from twisted.internet import reactor # noqa: F401
124 elif not is_reactor_installed():
125 # We need a reactor to be already installed.
126 raise RuntimeError(
127 "We expected a Twisted reactor to be installed but it isn't."
128 )
129 if reactor_class:
130 # We need to check that the correct reactor is installed.
131 verify_installed_reactor(reactor_class)
132 if is_asyncio_reactor_installed() and event_loop:
133 verify_installed_asyncio_event_loop(event_loop)
134
135 if self._init_reactor or reactor_class:
136 log_reactor_info()
137 else:
138 # We expect a reactor to not be installed.
139 if is_reactor_installed():
140 raise RuntimeError(
141 "TWISTED_REACTOR_ENABLED is False but a Twisted reactor is installed."
142 )
143 logger.debug("Not using a Twisted reactor")
144 self._apply_reactorless_default_settings()
145
146 self.extensions = ExtensionManager.from_crawler(self)
147 self.settings.freeze()
148
149 d = dict(overridden_settings(self.settings))
150 logger.info(
151 "Overridden settings:\n%(settings)s", {"settings": pprint.pformat(d)}

Callers 6

crawlMethod · 0.95
crawl_asyncMethod · 0.95
get_crawlerFunction · 0.80
runMethod · 0.80

Calls 15

load_objectFunction · 0.90
build_from_crawlerFunction · 0.90
install_reactorFunction · 0.90
is_reactor_installedFunction · 0.90
verify_installed_reactorFunction · 0.90
log_reactor_infoFunction · 0.90
overridden_settingsFunction · 0.90
load_settingsMethod · 0.80
freezeMethod · 0.80

Tested by 3

get_crawlerFunction · 0.64