MCPcopy
hub / github.com/scrapy/scrapy / _get_slot

Method _get_slot

scrapy/core/downloader/__init__.py:144–164  ·  view source on GitHub ↗
(
        self, request: Request, spider: Spider | None = None
    )

Source from the content-addressed store, hash-verified

142
143 @_warn_spider_arg
144 def _get_slot(
145 self, request: Request, spider: Spider | None = None
146 ) -> tuple[str, Slot]:
147 key = self.get_slot_key(request)
148 if key not in self.slots:
149 assert self.crawler.spider
150 slot_settings = self.per_slot_settings.get(key, {})
151 conc = self.ip_concurrency or self.domain_concurrency
152 conc, delay = _get_concurrency_delay(
153 conc, self.crawler.spider, self.settings
154 )
155 conc, delay = (
156 slot_settings.get("concurrency", conc),
157 slot_settings.get("delay", delay),
158 )
159 randomize_delay = slot_settings.get("randomize_delay", self.randomize_delay)
160 new_slot = Slot(conc, delay, randomize_delay)
161 self.slots[key] = new_slot
162 self._start_slot_gc()
163
164 return key, self.slots[key]
165
166 def get_slot_key(self, request: Request) -> str:
167 meta_slot: str | None = request.meta.get(self.DOWNLOAD_SLOT)

Callers 3

_enqueue_requestMethod · 0.95
test_paramsFunction · 0.95

Calls 5

get_slot_keyMethod · 0.95
_start_slot_gcMethod · 0.95
_get_concurrency_delayFunction · 0.85
SlotClass · 0.70
getMethod · 0.45

Tested by 2

test_paramsFunction · 0.76