o
    QDi	                     @   sZ   d dl mZ d dlmZmZ d dlmZmZm	Z	m
Z
 G dd dejZG dd deZdS )	    )
RedisCache)cache
exceptions)django_cache_get_fail_totaldjango_cache_get_totaldjango_cache_hits_totaldjango_cache_misses_totalc                   @   s    e Zd ZdZejdddZdS )r   z>Inherit redis to add metrics about hit/miss/interruption ratioNc              
   C   s   zt jdd  | jj|d ||d}W n, tjy@ } ztjdd  | jr;| j	r3| j
t| |W  Y d }~S  d }~ww |d urOtjdd  |S tjdd  |S )Nredisbackend)defaultversionclient)r   labelsincr   getr   ConnectionInterruptedr   _ignore_exceptions_log_ignored_exceptionsloggererrorstrr   r   )selfkeyr   r   r   cachede r   _/var/www/Datamplify/venv/lib/python3.10/site-packages/django_prometheus/cache/backends/redis.pyr      s"   zRedisCache.get)NNN)__name__
__module____qualname____doc__r   omit_exceptionr   r   r   r   r   r      s    r   c                       s   e Zd Zd fdd	Z  ZS )NativeRedisCacheNc                    sx   t jdd  zt j|d |d}W n ty#   tjdd   w |d ur2tjdd  |S tjdd  |S )Nnative_redisr
   )r   r   )	r   r   r   superr   	Exceptionr   r   r   )r   r   r   r   result	__class__r   r   r   $   s   zNativeRedisCache.get)NN)r   r   r    r   __classcell__r   r   r(   r   r#   #   s    r#   N) django.core.cache.backends.redisr   DjangoRedisCachedjango_redisr   r   django_prometheus.cache.metricsr   r   r   r   r#   r   r   r   r   <module>   s
    