
    2Bh                     ^    S r SSKrSSKrSSKJr  SSKJr  SrSrSr	Sr
S	rS
r " S S\5      rg)z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramc                   t    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rSS jrSS jrS rS rSrg)Statsd   z:statsD-based instrumentation, that passes as a logger
    c                    [         R                  " X5        [        SSUR                  5      U l        [        UR                  [        5      (       a  [        R                  nO[        R                  n [        R                  " U[        R                  5      U l        U R                  R                  UR                  5        UR                  U l        g ! [         a
    S U l         N%f = f)Nz^(.+[^.]+)\.*$z\g<1>.)r   __init__r   statsd_prefixprefix
isinstancestatsd_hoststrsocketAF_UNIXAF_INET
SOCK_DGRAMsockconnect	Exceptiondogstatsd_tags)selfcfgaddress_familys      L/var/www/html/env/lib/python3.13/site-packages/gunicorn/instrument/statsd.pyr   Statsd.__init__   s    "+Y8I8IJcoos++#^^N#^^N	nf6G6GHDIIIcoo. "00  	DI	s   4AC C)(C)c                 \    [         R                  " X/UQ70 UD6  U R                  SS5        g )Nzgunicorn.log.critical   )r   critical	incrementr   msgargskwargss       r    r$   Statsd.critical+   s'    3D3F3.2    c                 \    [         R                  " X/UQ70 UD6  U R                  SS5        g )Nzgunicorn.log.errorr#   )r   errorr%   r&   s       r    r-   Statsd.error/   s'    T000+Q/r+   c                 \    [         R                  " X/UQ70 UD6  U R                  SS5        g )Nzgunicorn.log.warningr#   )r   warningr%   r&   s       r    r0   Statsd.warning3   s'    t24262-q1r+   c                 \    [         R                  " X/UQ70 UD6  U R                  SS5        g )Nzgunicorn.log.exceptionr#   )r   	exceptionr%   r&   s       r    r3   Statsd.exception7   s)    4T4V4/3r+   c                 N    U R                   " [        R                  U/UQ70 UD6  g N)logloggingINFOr&   s       r    infoStatsd.info<   s    s4T4V4r+   c                 N    U R                   " [        R                  U/UQ70 UD6  g r6   )r7   r8   DEBUGr&   s       r    debugStatsd.debug@   s    5d5f5r+   c                     UR                  SS5      nUb  UR                  [        S5      nUR                  [        S5      nUR                  [        S5      nU(       ac  U(       a\  U(       aU  U[        :X  a  U R                  Xg5        O9U[        :X  a  U R                  Xg5        OU[        :X  a  U R                  Xg5        O U(       a  [        R                  " XU/UQ70 UD6  gg! [         a    [        R                  " U SSS9   gf = f)zDLog a given statistic if metric, value and type are present
        extraNzFailed to log to statsdTexc_info)get
METRIC_VAR	VALUE_VAR	MTYPE_VAR
GAUGE_TYPEr   COUNTER_TYPEr%   HISTOGRAM_TYPEr
   r   r7   r   r0   )	r   lvlr'   r(   r)   rA   r   r   typs	            r    r7   
Statsd.logC   s    	KJJw-E :t4		)T2ii	40ej(

61,v5.v5 

4c;D;F;  	KNN4!:TJ	Ks   C#C' ' D
	D
c                    [         R                  " XX#U5        UR                  S-  [        UR                  5      S-  -   nUR
                  n[        U[        5      (       a  UR                  S5      n[        U[        5      (       a  [        UR                  SS5      S   5      nU R                  SU5        U R                  SS5        U R                  SU-  S5        g)	z>Measure request duration
request_time is a datetime.timedelta
i  zutf-8Nr#   r   zgunicorn.request.durationzgunicorn.requestszgunicorn.request.status.%d)r   accesssecondsfloatmicrosecondsstatusr   bytesdecoder   intsplitr
   r%   )r   respreqenvironrequest_timeduration_in_msrS   s          r    rO   Statsd.access]   s     	d#=%--4u\=V=V7WZa7aafe$$]]7+Ffc""dA.q12F2NC*A.3f<a@r+   c                 Z    U R                  SR                  U R                  X5      5        g )Nz{0}{1}:{2}|g
_sock_sendformatr   r   namer   s      r    r   Statsd.gaugen   s    --dkk4GHr+   c                 \    U R                  SR                  U R                  XU5      5        g )Nz{0}{1}:{2}|c|@{3}r_   r   rc   r   sampling_rates       r    r%   Statsd.incrementq   s"    +224;;][\r+   c                 \    U R                  SR                  U R                  XU5      5        g )Nz{0}{1}:-{2}|c|@{3}r_   rf   s       r    	decrementStatsd.decrementt   s"    ,33DKKm\]r+   c                 Z    U R                  SR                  U R                  X5      5        g )Nz{0}{1}:{2}|msr_   rb   s      r    r
   Statsd.histogramw   s    ..t{{DHIr+   c                 \    [        U[        5      (       a  UR                  S5      nU R                  (       a!  US-   U R                  R                  S5      -   nU R                  (       a  U R                  R                  U5        g g ! [         a    [        R                  " U SSS9   g f = f)Nasciis   |#zError sending message to statsdTrB   )	r   r   encoder   r   sendr   r   r0   )r   r'   s     r    r`   Statsd._sock_sendz   s    	S#s##jj) ""EkD$7$7$>$>w$GGyy		s#  	SNN4!BTR	Ss   BB  B+*B+)r   r   r   N)g      ?)__name__
__module____qualname____firstlineno____doc__r   r$   r-   r0   r3   r:   r>   r7   rO   r   r%   rj   r
   r`   __static_attributes__ r+   r    r   r      sT    1$3024
56K4A"I]^JSr+   r   )rw   r8   r   rer   gunicorn.gloggingr   rE   rF   rG   rH   rI   rJ   r   ry   r+   r    <module>r|      sF   
 >    $ 
		
pSV pSr+   