o
    "j                     @   s*   d dl Z d dlZd dlZG dd dZdS )    Nc                   @   s^   e Zd ZdddZdddZdd	 Zdd
dZdddZdd ZdddZ	dd Z
dd ZdS )
ETCDClient   c              
   C   s   || _ d}|| j k r>z
tj||d| _W n) ty8 } z|d7 }td| d td W Y d }~nd }~ww || j k s
|| j krLtd| j  dd S )Nr   )hostport   z-Initialize etcd client failed with exception , retry after 1 second.z+Initialize etcd client failed failed after  times.)	retry_timesetcd3client	Exceptionlogginginfotimesleep
ValueError)selfr   r   r	   timese r   l/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/launch/utils/etcd_client.py__init__   s(   



zETCDClient.__init__NFc              
   C   s   d}|| j k r;z
| j||||W S  ty5 } z|d7 }td| d td W Y d }~nd }~ww || j k s|| j krItd| j  dd S )Nr   r   zPut failed with exception r   zPut failed after r   )	r	   r   putr   r   r   r   r   r   )r   keyvalueleaseprev_kvr   r   r   r   r   r   )   s    




zETCDClient.putc              
   C      d}|| j k r;z| j|W S  ty5 } z|d7 }td| d| d td W Y d }~nd }~ww || j k s|| j krLtd| d| j  dd S )Nr   r   zGet  failed with exception r    failed after r   )	r	   r   getr   r   r   r   r   r   )r   r   r   r   r   r   r   r    8   $   


zETCDClient.getc              
   C   s   d}|| j k r=z	| j|||W S  ty7 } z|d7 }td| d| d td W Y d }~nd }~ww || j k s|| j krNtd| d| j  dd S )Nr   r   zDelete r   r   r   r   )	r	   r   deleter   r   r   r   r   r   )r   r   r   Zreturn_responser   r   r   r   r   r"   J   s$   


zETCDClient.deleter   c              
   C   s   d}|| j k r;z| j|W S  ty5 } z|d7 }td| d| d td W Y d }~nd }~ww || j k s|| j krLtd| d| j  dd S )Nr   r   zGet prefix r   r   r   r   )	r	   r   
get_prefixr   r   r   r   r   r   )r   
key_prefixZ
sort_orderZsort_targetr   r   r   r   r   r#   \   r!   zETCDClient.get_prefixc              
   C   r   )Nr   r   zDelete prefix r   r   r   r   )	r	   r   delete_prefixr   r   r   r   r   r   )r   prefixr   r   r   r   r   r%   n   r!   zETCDClient.delete_prefixc              
   C   s   d}|| j k r9z| j||W S  ty3 } z|d7 }td| d td W Y d }~nd }~ww || j k s|| j krGtd| j  dd S )Nr   r   zLease failed with exception r   zLease failed after r   )	r	   r   r   r   r   r   r   r   r   )r   ttlZlease_idr   r   r   r   r   r      s    



zETCDClient.leasec              
   K   s   d}|| j k r=z| jj||fi |W S  ty7 } z|d7 }td| d td W Y d }~nd }~ww || j k s|| j krKtd| j  dd S )Nr   r   z0Add watch prefix callback failed with exception r   z'Add watch prefix callback failed after r   )	r	   r   add_watch_prefix_callbackr   r   r   r   r   r   )r   r$   callbackkwargsr   r   r   r   r   r(      s,   



z$ETCDClient.add_watch_prefix_callbackc              
   C   s   d}|| j k r8z| j|W S  ty2 } z|d7 }td| d td W Y d }~nd }~ww || j k s|| j krFtd| j  dd S )Nr   r   z#Cancel watch failed with exception r   zCancel watch failed after r   )	r	   r   cancel_watchr   r   r   r   r   r   )r   Zwatch_idr   r   r   r   r   r+      s$   



zETCDClient.cancel_watch)r   )NF)FF)Nr   )N)__name__
__module____qualname__r   r   r    r"   r#   r%   r   r(   r+   r   r   r   r   r      s    




r   )r   r   r
   r   r   r   r   r   <module>   s   