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_jsonexcept 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)