Skip to content

Commit e6272e5

Browse files
committed
make AutoThrottle._adjust_delay easier to understand
1 parent 7c98855 commit e6272e5

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

scrapy/extensions/throttle.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,22 @@ def _get_slot(self, request, spider):
6868

6969
def _adjust_delay(self, slot, latency, response):
7070
"""Define delay adjustment policy"""
71+
72+
# Adjust the delay to be closer to latency.
73+
new_delay = (slot.delay + latency) / 2.0
74+
7175
# If latency is bigger than old delay, then use latency instead of mean.
72-
# It works better with problematic sites
73-
new_delay = min(max(self.mindelay, latency, (slot.delay + latency) / 2.0), self.maxdelay)
76+
# It works better with problematic sites.
77+
new_delay = max(latency, new_delay)
78+
79+
# Make sure self.mindelay <= new_delay <= self.max_delay
80+
new_delay = min(max(self.mindelay, new_delay), self.maxdelay)
7481

7582
# Dont adjust delay if response status != 200 and new delay is smaller
7683
# than old one, as error pages (and redirections) are usually small and
7784
# so tend to reduce latency, thus provoking a positive feedback by
7885
# reducing delay instead of increase.
79-
if response.status == 200 or new_delay > slot.delay:
80-
slot.delay = new_delay
86+
if response.status != 200 and new_delay <= slot.delay:
87+
return
88+
89+
slot.delay = new_delay

0 commit comments

Comments
 (0)