
     ii                     b    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r " S S\5      rg)z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramtimerc                   z    \ 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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/ias/venv/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.error0   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!   r1   Statsd.warning4   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!   r4   Statsd.exception8   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 r7   )r8   r9   DEBUGr'   s       r!   debugStatsd.debugA   s    5d5f5r,   c                 R    UR                  SS5      nUb  UR                  [        S5      nUR                  [        S5      nUR                  [        S5      nU(       a  U(       ax  U(       aq  U[        :X  a  U R                  Xg5        OUU[        :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
   
TIMER_TYPEr   r   r8   r   r1   )	r   lvlr(   r)   r*   rB   r   r   typs	            r!   r8   
Statsd.logD   s    	KJJw-E :t4		)T2ii	40ej(

61,v5.v5
*

61 

4c;D;F;  	KNN4!:TJ	Ks   C?D  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_msrU   s          r!   rQ   Statsd.access`   s     	d#=%--4u\=V=V7WZa7aafe$$]]7+Ffc""dA.q12F

.?*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.gaugeq       --dkk4GHr,   c                 \    U R                  SR                  U R                  XU5      5        g )Nz{0}{1}:{2}|c|@{3}ra   r   re   r   sampling_rates       r!   r&   Statsd.incrementt   s"    +224;;][\r,   c                 \    U R                  SR                  U R                  XU5      5        g )Nz{0}{1}:-{2}|c|@{3}ra   ri   s       r!   	decrementStatsd.decrementw   s"    ,33DKKm\]r,   c                 Z    U R                  SR                  U R                  X5      5        g )Nz{0}{1}:{2}|msra   rd   s      r!   r   Statsd.timerz   s    ..t{{DHIr,   c                 Z    U R                  SR                  U R                  X5      5        g )Nz{0}{1}:{2}|hra   rd   s      r!   r
   Statsd.histogram}   rg   r,   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 statsdTrC   )	r   r   encoder   r   sendr   r   r1   )r   r(   s     r!   rb   Statsd._sock_send   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.   r1   r4   r;   r?   r8   rQ   r   r&   rm   r   r
   rb   __static_attributes__ r,   r!   r   r      sZ    1$3024
56K8A"I]^JISr,   r   )r|   r9   r   rer   gunicorn.gloggingr   rF   rG   rH   rI   rJ   rK   rL   r   r~   r,   r!   <module>r      sK   
 >    $ 
		

uSV uSr,   