python包重要修改
akshare\stock_feature\stock_hist_em.py
源码:
r = requests.get(url, params=params, timeout=timeout)
data_json = r.json()
修改后:
import time
def fetch_data_with_retries(url, params=None, retries=10, delay=2, timeout=10):
"""
尝试多次请求,直到成功或达到最大重试次数。
:param url: 请求的URL地址
:param params: 请求参数
:param retries: 最大重试次数
:param delay: 每次重试之间的等待时间(秒)
:param timeout: 请求超时时间(秒)
:return: 返回JSON数据
"""
for attempt in range(retries):
try:
r = requests.get(url, params=params, timeout=timeout)
r.raise_for_status() # 如果响应码不是200,则抛出异常
data_json = r.json() # 获取返回的JSON数据
return data_json
except requests.exceptions.RequestException as e:
print(f"请求失败 ({attempt + 1}/{retries}): {e}. 正在重试...")
time.sleep(delay) # 等待一段时间后重试
# 如果所有尝试都失败了,抛出异常
raise Exception("最大重试次数已超过,请检查网络连接或API服务。")
data_json = fetch_data_with_retries(url, params=params, retries=10, delay=3)