
    fi                     Z    d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z
 	 d	dZ	 d	dZdS )
    N)RequestException)NetworkErrorAPIErrorRateLimitErrorDataParsingError)config      c           
         |t           j        }t          |          D ]G}	 t          j        | |||          }|j        dk    rG	 |                                }|st          d          |c S # t          $ r t          d          w xY w|j        dk    rt          d|j                   t          d|j                   # t          t          t          t          f$ r}	||d	z
  k    rUt          |	t                    r t          |	t          t          f          r t          d
| dt          |	                     t          j        |           |dz  }Y d}	~	Ad}	~	ww xY wt          d
| d          uc  
    发送 HTTP GET 请求，支持重试机制和代理设置。

    :param url: 请求的 URL
    :param params: URL 参数 (可选)
    :param headers: 请求头 (可选)
    :param proxies: 代理设置 (可选)
    :param max_retries: 最大重试次数
    :param retry_delay: 初始重试延迟（秒）
    :return: 解析后的 JSON 数据
    N)paramsheadersproxies   zEmpty response datazFailed to parse JSON responsei  z"Rate limit exceeded. Status code: z!API request failed. Status code: r
   zFailed to connect after z attempts:    z	 attempts)r   r   rangerequestsgetstatus_codejsonr   
ValueErrorr   r   r   
isinstancer   strtimesleep
urlr   r   r   max_retriesretry_delayattemptresponsedataes
             :/usr/local/lib/python3.11/dist-packages/akshare/request.pymake_request_with_retry_jsonr%   
   s    .%% " "!	|FGW  H #s**L#==??D F./DEEEKKK! L L L*+JKKKL%,,$O9MOO   N8LNN   !.(<LM 	 	 	+/))a00 H.>#?@@ &S;SS3q66SS   J{###1KKKKKK	 H+HHH
I
IIs*   #C&A//B		<CE$"A7EE$c           
         |t           j        }t          |          D ]:}	 t          j        | |||          }|j        dk    r:	 |j        }|st          d          |c S # t          $ r t          d          w xY w|j        dk    rt          d|j                   t          d|j                   # t          t          t          t          f$ r}	||d	z
  k    rUt          |	t                    r t          |	t          t          f          r t          d
| dt          |	                     t          j        |           |dz  }Y d}	~	4d}	~	ww xY wt          d
| d          r   )r   r   r   r   r   r   textr   r   r   r   r   r   r   r   r   r   r   s
             r$   make_request_with_retry_textr(   A   s    .%% " "!	|FGW  H #s**L#=D F./DEEEKKK! L L L*+JKKKL%,,$O9MOO   N8LNN   !.(<LM 	 	 	+/))a00 H.>#?@@ &S;SS3q66SS   J{###1KKKKKK	 H+HHH
I
IIs*   #B8A""A<<<B88EA7EE)NNNr	   r
   )r   r   requests.exceptionsr   akshare.exceptionsr   r   r   r   akshare.utils.contextr   r%   r(        r$   <module>r.      s      0 0 0 0 0 0 W W W W W W W W W W W W ( ( ( ( ( ( NO4J 4J 4J 4Jp NO4J 4J 4J 4J 4J 4Jr-   