
    O=d                     f    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 G d de          ZdS )z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramc                   j    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S )Statsdz:statsD-based instrumentation, that passes as a logger
    c                 r   t          j        | |           t          dd|j                  | _        	 |j        \  }}t          j        t          j        t          j                  | _	        | j	        
                    |t          |          f           n# t          $ r
 d| _	        Y nw xY w|j        | _        dS )z"host, port: statsD server
        z^(.+[^.]+)\.*$z\g<1>.N)r   __init__r   statsd_prefixprefixstatsd_hostsocketAF_INET
SOCK_DGRAMsockconnectint	Exceptiondogstatsd_tags)selfcfghostports       DD:\Sites\api_v1\venv\Lib\site-packages\gunicorn/instrument/statsd.pyr   zStatsd.__init__   s     	c"""+Y8IJJ	JD$fnf6GHHDIItSYY/0000 	 	 	DIII	 "0s   A!B B('B(c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.critical   )r   critical	incrementr   msgargskwargss       r   r!   zStatsd.critical)   s?    c3D333F333.22222    c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.errorr    )r   errorr"   r#   s       r   r)   zStatsd.error-   s?    T30000000+Q/////r'   c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.warningr    )r   warningr"   r#   s       r   r+   zStatsd.warning1   s?    tS242226222-q11111r'   c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.exceptionr    )r   	exceptionr"   r#   s       r   r-   zStatsd.exception5   s@    s4T444V444/33333r'   c                 >     | j         t          j        |g|R i | d S N)logloggingINFOr#   s       r   infozStatsd.info:   s.    s4T444V44444r'   c                 >     | j         t          j        |g|R i | d S r/   )r0   r1   DEBUGr#   s       r   debugzStatsd.debug>   s.    5d555f55555r'   c                 :   	 |                     dd          }||                     t          d          }|                     t          d          }|                     t          d          }|rk|ri|rg|t          k    r|                     ||           nE|t          k    r|                     ||           n#|t          k    r| 	                    ||           n	 |rt          j        | ||g|R i | dS dS # t          $ r t          j        | dd           Y dS 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
   r   r0   r   r+   )	r   lvlr$   r%   r&   r8   r   r   typs	            r   r0   z
Statsd.logA   sW   	KJJw--E :t44		)T22ii	400 e  j((

651111,,vu5555..vu5555  <
4c;D;;;F;;;;;< < 	K 	K 	KN4!:TJJJJJJJ	Ks   C/C5 5!DDc                    t          j        | ||||           |j        dz  t          |j                  dz  z   }|j        }t          |t                    r)t          |	                    dd          d                   }| 
                    d|           |                     dd           |                     d|z  d           dS )zNMeasure request duration
        request_time is a datetime.timedelta
        i  Nr    r   zgunicorn.request.durationzgunicorn.requestszgunicorn.request.status.%d)r   accesssecondsfloatmicrosecondsstatus
isinstancestrr   splitr
   r"   )r   respreqenvironrequest_timeduration_in_msrI   s          r   rE   zStatsd.access[   s     	dD#w===%-4u\=V7W7WZa7aafc"" 	3dA..q122F2NCCC*A...3f<a@@@@@r'   c                 d    |                      d                    | j        ||                     d S )Nz{0}{1}:{2}|g
_sock_sendformatr   r   namer   s      r   r   zStatsd.gaugej   s.    --dk4GGHHHHHr'         ?c                 f    |                      d                    | j        |||                     d S )Nz{0}{1}:{2}|c|@{3}rS   r   rW   r   sampling_rates       r   r"   zStatsd.incrementm   s1    +224;e][[\\\\\r'   c                 f    |                      d                    | j        |||                     d S )Nz{0}{1}:-{2}|c|@{3}rS   rZ   s       r   	decrementzStatsd.decrementp   s1    ,33DKum\\]]]]]r'   c                 d    |                      d                    | j        ||                     d S )Nz{0}{1}:{2}|msrS   rV   s      r   r
   zStatsd.histograms   s.    ..t{D%HHIIIIIr'   c                 @   	 t          |t                    r|                    d          }| j        r |dz   | j                            d          z   }| j        r| j                            |           d S d S # t          $ r t          j        | dd           Y d S w xY w)Nasciis   |#zError sending message to statsdTr9   )	rJ   rK   encoder   r   sendr   r   r+   )r   r$   s     r   rT   zStatsd._sock_sendv   s    	S#s## *jj)) " HEkD$7$>$>w$G$GGy $	s#####$ $ 	S 	S 	SN4!BTRRRRRRR	Ss   A2A8 8!BBN)rX   )__name__
__module____qualname____doc__r   r!   r)   r+   r-   r3   r6   r0   rE   r   r"   r]   r
   rT    r'   r   r   r      s        1 1 13 3 30 0 02 2 24 4 4
5 5 56 6 6K K K4A A AI I I] ] ] ]^ ^ ^ ^J J JS S S S Sr'   r   )rf   r1   r   rer   gunicorn.gloggingr   r<   r=   r>   r?   r@   rA   r   rg   r'   r   <module>rj      s    > =         $ $ $ $ $ $ 
		
kS kS kS kS kSV kS kS kS kS kSr'   