
    AҐii                     b    d Z ddlZddlZddlmZ ddlmZ dZdZdZ	dZ
d	Zd
ZdZ G d de      Zy)z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramtimerc                   n    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZddZddZd Zd Zd Zy)Statsdz:statsD-based instrumentation, that passes as a logger
    c                    t        j                  | |       t        dd|j                        | _        t        |j                  t              rt        j                  }nt        j                  }	 t        j                  |t        j                        | _        | j                  j                  |j                         |j                  | _        y # t        $ r
 d | _        Y $w xY w)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      S/var/www/descvideos/venv/lib/python3.12/site-packages/gunicorn/instrument/statsd.pyr   zStatsd.__init__   s    c"+Y8I8IJcoos+#^^N#^^N	nf6G6GHDIIIcoo. "00  	DI	s   /AC C"!C"c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.critical   )r   critical	incrementr   msgargskwargss       r    r#   zStatsd.critical,   s)    c3D3F3.2    c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.errorr"   )r   errorr$   r%   s       r    r+   zStatsd.error0   s)    T3000+Q/r)   c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.warningr"   )r   warningr$   r%   s       r    r-   zStatsd.warning4   s)    tS24262-q1r)   c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.exceptionr"   )r   	exceptionr$   r%   s       r    r/   zStatsd.exception8   s+    s4T4V4/3r)   c                 N     | j                   t        j                  |g|i | y N)logloggingINFOr%   s       r    infozStatsd.info=   s     s4T4V4r)   c                 N     | j                   t        j                  |g|i | y r1   )r2   r3   DEBUGr%   s       r    debugzStatsd.debugA   s     5d5f5r)   c                 *   	 |j                  dd      }||j                  t        d      }|j                  t        d      }|j                  t        d      }|ru|rs|rq|t        k(  r| j                  ||       nU|t        k(  r| j                  ||       n9|t        k(  r| j                  ||       n|t        k(  r| j                  ||       n	 |rt        j                  | ||g|i | yy# t        $ r t        j                  | dd       Y yw xY w)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   r2   r   r-   )	r   lvlr&   r'   r(   r:   r   r   typs	            r    r2   z
Statsd.logD   s    	KJJw-E :t4		)T2ii	40ej(

651,vu5.vu5
*

651 

4c;D;F;  	KNN4!:TJ	Ks   C*C. .!DDc                    t        j                  | ||||       |j                  dz  t        |j                        dz  z   }|j
                  }t        |t              r|j                  d      }t        |t              rt        |j                  dd      d         }| j                  d|       | j                  dd       | j                  d|z  d       y)	zNMeasure 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_msrL   s          r    rH   zStatsd.access`   s     	dD#w=%--4u\=V=V7WZa7aafe$]]7+Ffc"dA.q12F

.?*A.3f<a@r)   c                 \    | j                  dj                  | j                  ||             y )Nz{0}{1}:{2}|g
_sock_sendformatr   r   namer   s      r    r   zStatsd.gaugeq   !    --dkk4GHr)   c                 ^    | j                  dj                  | j                  |||             y )Nz{0}{1}:{2}|c|@{3}rW   r   r[   r   sampling_rates       r    r$   zStatsd.incrementt   s$    +224;;e][\r)   c                 ^    | j                  dj                  | j                  |||             y )Nz{0}{1}:-{2}|c|@{3}rW   r^   s       r    	decrementzStatsd.decrementw   s$    ,33DKKum\]r)   c                 \    | j                  dj                  | j                  ||             y )Nz{0}{1}:{2}|msrW   rZ   s      r    r   zStatsd.timerz   s!    ..t{{D%HIr)   c                 \    | j                  dj                  | j                  ||             y )Nz{0}{1}:{2}|hrW   rZ   s      r    r
   zStatsd.histogram}   r\   r)   c                 @   	 t        |t              r|j                  d      }| j                  r!|dz   | j                  j                  d      z   }| j                  r| j                  j                  |       y y # t        $ r t        j                  | dd       Y y w xY w)Nasciis   |#zError sending message to statsdTr;   )	r   r   encoder   r   sendr   r   r-   )r   r&   s     r    rX   zStatsd._sock_send   s    	S#s#jj) ""EkD$7$7$>$>w$GGyy		s#  	SNN4!BTR	Ss   A5A9 9!BBN)g      ?)__name__
__module____qualname____doc__r   r#   r+   r-   r/   r5   r8   r2   rH   r   r$   ra   r   r
   rX    r)   r    r   r      sZ    1$3024
56K8A"I]^JISr)   r   )rk   r3   r   rer   gunicorn.gloggingr   r>   r?   r@   rA   rB   rC   rD   r   rl   r)   r    <module>ro      sK   
 >    $ 
		

uSV uSr)   