
    !h|                        S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
  \(       a  S SKJr  S SKJr  S SKJr  S S	KJr  \R&                  " \5      r " S
 S5      rg)    )annotationsN)TYPE_CHECKING)RequestSpidersignals)NotConfigured)Self)Slot)Crawler)Responsec                      \ rS rSrSS jr\SS j5       rSS jrSS jrSS jr	SS jr
        SS jr      SS	 jrSS
 jrSrg)AutoThrottle   c                   Xl         UR                  R                  S5      (       d  [        eUR                  R                  S5      U l        UR                  R                  S5      U l        U R                  S::  a  [        SU R                  < S35      eUR                  R                  U R                  [        R                  S9  UR                  R                  U R                  [        R                  S9  g )NAUTOTHROTTLE_ENABLEDAUTOTHROTTLE_DEBUGAUTOTHROTTLE_TARGET_CONCURRENCYg        z!AUTOTHROTTLE_TARGET_CONCURRENCY (z) must be higher than 0.)signal)crawlersettingsgetboolr   debuggetfloattarget_concurrencyr   connect_spider_openedspider_opened_response_downloadedresponse_downloaded)selfr   s     a/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/extensions/throttle.py__init__AutoThrottle.__init__   s     '''(>??"++334HI
)0)9)9)B)B-*
 ""c)++..FH  	 3 3G<Q<QR%%g.I.I 	  	
    c                    U " U5      $ N )clsr   s     r!   from_crawlerAutoThrottle.from_crawler)   s    7|r$   c                    U R                  U5      U l        U R                  U5      U l        U R	                  U5      Ul        g r&   )
_min_delaymindelay
_max_delaymaxdelay_start_delaydownload_delayr    spiders     r!   r   AutoThrottle._spider_opened-   s5    // $ 1 1& 9r$   c                f    U R                   R                  n[        USUR                  S5      5      $ )Nr1   DOWNLOAD_DELAY)r   r   getattrr   )r    r3   ss      r!   r,   AutoThrottle._min_delay2   s+    LL!!v/<L1MNNr$   c                L    U R                   R                  R                  S5      $ )NAUTOTHROTTLE_MAX_DELAY)r   r   r   r2   s     r!   r.   AutoThrottle._max_delay6   s    ||$$--.FGGr$   c                t    [        U R                  U R                  R                  R	                  S5      5      $ )NAUTOTHROTTLE_START_DELAY)maxr-   r   r   r   r2   s     r!   r0   AutoThrottle._start_delay9   s.    MM4<<0099:TU
 	
r$   c           
        U R                  X#5      u  pEUR                  R                  S5      nUb"  Ub  UR                  R                  SS5      SL a  g UR                  nU R	                  XVU5        U R
                  (       ak  UR                  U-
  n[        UR                  5      n	[        UR                  5      n
[        R                  SUU
UR                  S-  US-  US-  U	S.SU0S	9  g g )
Ndownload_latencyautothrottle_dont_adjust_delayFTz~slot: %(slot)s | conc:%(concurrency)2d | delay:%(delay)5d ms (%(delaydiff)+d) | latency:%(latency)5d ms | size:%(size)6d bytesi  )slotconcurrencydelay	delaydifflatencysizer3   )extra)	_get_slotmetagetrF   _adjust_delayr   lenbodytransferringloggerinfo)r    responserequestr3   keyrD   rH   olddelaydiffrI   concs              r!   r   !AutoThrottle._response_downloaded>   s     NN73	,,""#56O||| @%HDP::4(3::::(Dx}}%Dt(()DKKA  #'!ZZ$.!%&~   (  	 r$   c                    UR                   R                  S5      nUc  gU R                  R                  (       d   eX0R                  R                  R                  R
                  R                  U5      4$ )Ndownload_slot)NN)rL   rM   r   engine
downloaderslots)r    rU   r3   rV   s       r!   rK   AutoThrottle._get_slot_   s]     ",,**?;;||""""LL''2288<<SAAAr$   c                    X R                   -  nUR                  U-   S-  n[        XE5      n[        [        U R                  U5      U R
                  5      nUR                  S:w  a  XQR                  ::  a  gXQl        g)zDefine delay adjustment policyg       @   N)r   rF   r?   minr-   r/   status)r    rD   rH   rT   target_delay	new_delays         r!   rN   AutoThrottle._adjust_delayh   so     !8!88 ZZ,.#5	 0	 DMM95t}}E	 ??c!i::&=
r$   )r   r   r/   r-   r   N)r   r   )r   r   returnr	   )r3   r   rh   None)r3   r   rh   float)rT   r   rU   r   r3   r   rh   ri   )rU   r   r3   r   rh   ztuple[str | None, Slot | None])rD   r
   rH   rj   rT   r   rh   ri   )__name__
__module____qualname____firstlineno__r"   classmethodr)   r   r,   r.   r0   r   rK   rN   __static_attributes__r'   r$   r!   r   r      s}    
&  :
OH

 +2<B	BBB(.B	'Br$   r   )
__future__r   loggingtypingr   scrapyr   r   r   scrapy.exceptionsr   typing_extensionsr	   scrapy.core.downloaderr
   scrapy.crawlerr   scrapy.httpr   	getLoggerrk   rR   r   r'   r$   r!   <module>r{      sD    "    + + +&+&$ 
		8	$l lr$   