mirror of https://github.com/scrapy/scrapy.git
Deprecate download_delay attr in scrapy/extensions/throttle.py, scrapy/core/downloader/__init__.py and tests/test_extension_throttle.py
This commit is contained in:
parent
3d3c84ceb4
commit
10f4cd34e8
|
|
@ -97,6 +97,8 @@ def _get_concurrency_delay(
|
|||
if hasattr(spider, "download_delay"): # pragma: no cover
|
||||
warn_on_deprecated_spider_attribute("download_delay", "DOWNLOAD_DELAY")
|
||||
delay = spider.download_delay
|
||||
if settings.getbool("AUTOTHROTTLE_ENABLED"):
|
||||
delay = max(delay, settings.getfloat("AUTOTHROTTLE_START_DELAY"))
|
||||
|
||||
if hasattr(spider, "max_concurrent_requests"): # pragma: no cover
|
||||
warn_on_deprecated_spider_attribute(
|
||||
|
|
|
|||
|
|
@ -44,12 +44,13 @@ class AutoThrottle:
|
|||
return cls(crawler)
|
||||
|
||||
def _spider_opened(self, spider: Spider) -> None:
|
||||
if hasattr(spider, "download_delay"): # pragma: no cover
|
||||
warn_on_deprecated_spider_attribute("download_delay", "DOWNLOAD_DELAY")
|
||||
self.mindelay = self._min_delay(spider)
|
||||
self.maxdelay = self._max_delay(spider)
|
||||
|
||||
def _min_delay(self, spider: Spider) -> float:
|
||||
if hasattr(spider, "download_delay"): # pragma: no cover
|
||||
warn_on_deprecated_spider_attribute("download_delay", "DOWNLOAD_DELAY")
|
||||
return spider.download_delay
|
||||
return self.crawler.settings.getfloat("DOWNLOAD_DELAY")
|
||||
|
||||
def _max_delay(self, spider: Spider) -> float:
|
||||
|
|
@ -57,7 +58,7 @@ class AutoThrottle:
|
|||
|
||||
def _start_delay(self, spider: Spider) -> float:
|
||||
return max(
|
||||
self.crawler.settings.getfloat("DOWNLOAD_DELAY"),
|
||||
self.mindelay,
|
||||
self.crawler.settings.getfloat("AUTOTHROTTLE_START_DELAY"),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,10 +63,10 @@ def test_target_concurrency_invalid(value):
|
|||
("spider", "setting", "expected"),
|
||||
[
|
||||
(UNSET, UNSET, DOWNLOAD_DELAY),
|
||||
(1.0, UNSET, DOWNLOAD_DELAY),
|
||||
(1.0, UNSET, 1.0),
|
||||
(UNSET, 1.0, 1.0),
|
||||
(1.0, 2.0, 2.0),
|
||||
(3.0, 2.0, 2.0),
|
||||
(1.0, 2.0, 1.0),
|
||||
(3.0, 2.0, 3.0),
|
||||
],
|
||||
)
|
||||
def test_mindelay_definition(spider, setting, expected):
|
||||
|
|
@ -82,7 +82,8 @@ def test_mindelay_definition(spider, setting, expected):
|
|||
|
||||
crawler = get_crawler(settings, _TestSpider)
|
||||
at = build_from_crawler(AutoThrottle, crawler)
|
||||
assert at._min_delay(_TestSpider()) == expected
|
||||
at._spider_opened(_TestSpider())
|
||||
assert at.mindelay == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
@ -107,7 +108,7 @@ def test_maxdelay_definition(value, expected):
|
|||
[
|
||||
(UNSET, UNSET, UNSET, AUTOTHROTTLE_START_DELAY),
|
||||
(AUTOTHROTTLE_START_DELAY - 1.0, UNSET, UNSET, AUTOTHROTTLE_START_DELAY),
|
||||
(AUTOTHROTTLE_START_DELAY + 1.0, UNSET, UNSET, AUTOTHROTTLE_START_DELAY),
|
||||
(AUTOTHROTTLE_START_DELAY + 1.0, UNSET, UNSET, AUTOTHROTTLE_START_DELAY + 1.0),
|
||||
(UNSET, AUTOTHROTTLE_START_DELAY - 1.0, UNSET, AUTOTHROTTLE_START_DELAY),
|
||||
(UNSET, AUTOTHROTTLE_START_DELAY + 1.0, UNSET, AUTOTHROTTLE_START_DELAY + 1.0),
|
||||
(UNSET, UNSET, AUTOTHROTTLE_START_DELAY - 1.0, AUTOTHROTTLE_START_DELAY - 1.0),
|
||||
|
|
@ -116,13 +117,13 @@ def test_maxdelay_definition(value, expected):
|
|||
AUTOTHROTTLE_START_DELAY + 1.0,
|
||||
AUTOTHROTTLE_START_DELAY + 2.0,
|
||||
UNSET,
|
||||
AUTOTHROTTLE_START_DELAY + 2.0,
|
||||
AUTOTHROTTLE_START_DELAY + 1.0,
|
||||
),
|
||||
(
|
||||
AUTOTHROTTLE_START_DELAY + 2.0,
|
||||
UNSET,
|
||||
AUTOTHROTTLE_START_DELAY + 1.0,
|
||||
AUTOTHROTTLE_START_DELAY + 1.0,
|
||||
AUTOTHROTTLE_START_DELAY + 2.0,
|
||||
),
|
||||
(
|
||||
AUTOTHROTTLE_START_DELAY + 1.0,
|
||||
|
|
@ -149,11 +150,7 @@ def test_startdelay_definition(min_spider, min_setting, start_setting, expected)
|
|||
at = build_from_crawler(AutoThrottle, crawler)
|
||||
spider = _TestSpider()
|
||||
at._spider_opened(spider)
|
||||
download_delay = min_setting if min_setting is not UNSET else DOWNLOAD_DELAY
|
||||
autothrottle_start = (
|
||||
start_setting if start_setting is not UNSET else AUTOTHROTTLE_START_DELAY
|
||||
)
|
||||
assert max(download_delay, autothrottle_start) == expected
|
||||
assert at._start_delay(spider) == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
|
|||
Loading…
Reference in New Issue