
    XjZ                         U d dl Z d dlmZ d dlZd dlmZ  ee          ZdZdZ	 G d de
e          Z G d d	          Zdaedz  ed
<   defdZdS )    N)Enum)
get_loggerzllm:service:statuszllm:training:infoc                       e Zd ZdZdZdZdZdS )ServiceMode	inferencetrainingmedia_processing	switchingN)__name__
__module____qualname__	INFERENCETRAININGMEDIA_PROCESSING	SWITCHING     O/lsinfo/ai/hellotax_ai/base_platform/app/services/llm/service_status_manager.pyr   r      s#        IH)IIIr   r   c                   j    e Zd Zdej        fdZdefdZddededz  ddfdZ	dedz  fd	Z
defd
ZdS )ServiceStatusManagerredis_clientc                     || _         d S N)_redis)selfr   s     r   __init__zServiceStatusManager.__init__   s    "r   returnc                 j   	 | j                             t                    }|t          j        S t          |t                    r|                                n|}t          |          S # t          j	        t          f$ r3}t                              d|            t          j        cY d }~S d }~ww xY w)Nz*Failed to read service status from Redis: )r   getREDIS_KEY_STATUSr   r   
isinstancebytesdecoderedis
RedisError
ValueErrorloggerwarningr   valuedecodedes       r   get_current_modez%ServiceStatusManager.get_current_mode   s    	)KOO$455E}",,(25%(@(@KellnnneGw''' *- 	) 	) 	)NNKKKLLL(((((((	)s"   ,A) 9A) )B2?(B-'B2-B2Nmodetraining_infoc                    	 | j                             t          |j                   |t          j        k    r5|r3| j                             t          t          j        |                     n/|t          j	        k    r| j         
                    t                     t                              d|j                    d S # t          j        $ r#}t                              d|             d }~ww xY w)NzService mode set to: z%Failed to set service mode in Redis: )r   setr    r*   r   r   REDIS_KEY_TRAINING_INFOjsondumpsr   deleter'   infor$   r%   error)r   r.   r/   r,   s       r   set_modezServiceStatusManager.set_mode$   s    		KOO,dj999{++++ 7M9R9RSSSS...""#:;;;KK<
<<===== 	 	 	LLDDDEEE	s   B;B? ?C1C,,C1c                 `   	 | j                             t                    }|d S t          |t                    r|                                n|}t          j        |          S # t          j	        t          j
        t          f$ r(}t                              d|            Y d }~d S d }~ww xY w)Nz)Failed to read training info from Redis: )r   r   r2   r!   r"   r#   r3   loadsr$   r%   JSONDecodeErrorr&   r'   r(   r)   s       r   get_training_infoz&ServiceStatusManager.get_training_info0   s    	KOO$;<<E}t(25%(@(@KellnnneG:g&&& $"6
C 	 	 	NNJqJJKKK44444	s   !A$ >A$ $!B-B((B-c                 F    |                                  t          j        k    S r   )r-   r   r   )r   s    r   is_inference_availablez+ServiceStatusManager.is_inference_available;   s    $$&&+*???r   r   )r   r   r   r$   Redisr   r   r-   dictr8   r<   boolr>   r   r   r   r   r      s        #U[ # # # #	)+ 	) 	) 	) 	)
 
[ 
 
PT 
 
 
 
	4$; 	 	 	 	@ @ @ @ @ @ @r   r   _status_managerr   c                      t           gddlm}  | j        rt	          j        | j        dd          }n.t	          j        | j        | j        | j	        | j
        dd          }t          |          a t           S )Nr   )settingsF   )decode_responsessocket_connect_timeout)hostportdbpasswordrF   rG   )rB   
app.configrD   	REDIS_URLr$   from_urlr?   
REDIS_HOST
REDIS_PORTREDIS_DBREDIS_PASSWORDr   )rD   clients     r   get_status_managerrT   B   s    '''''' 	^"UST  FF [(($!0!&'(  F /v66r   )r3   enumr   r$   common_loggingr   r   r'   r    r2   strr   r   rB   __annotations__rT   r   r   r   <module>rY      s            % % % % % %	H		' -     #t   (@ (@ (@ (@ (@ (@ (@ (@V 04%, 3 3 30      r   