superxu520 commited on
Commit
c83976a
·
verified ·
1 Parent(s): c370588

Upload 2 files

Browse files
Files changed (2) hide show
  1. requirements.txt +1 -0
  2. sync_data.py +18 -7
requirements.txt CHANGED
@@ -7,3 +7,4 @@ python-dotenv>=1.0.0
7
  yfinance>=0.2.0
8
  pytz>=2023.3
9
  schedule>=1.2.0 # 定时任务调度
 
 
7
  yfinance>=0.2.0
8
  pytz>=2023.3
9
  schedule>=1.2.0 # 定时任务调度
10
+ pyarrow>=14.0.0 # Parquet 文件支持
sync_data.py CHANGED
@@ -37,13 +37,23 @@ def get_stock_list() -> pd.DataFrame:
37
  """获取全市场标的列表"""
38
  logger.info("Fetching all-market target list...")
39
  all_lists = []
40
- try:
41
- df_a = ak.stock_zh_a_spot_em()[['代码', '名称']]
42
- df_a.columns = ['code', 'name']
43
- df_a['market'] = df_a['code'].apply(lambda x: '主板' if x.startswith(('60', '00')) else ('创业板' if x.startswith('30') else ('科创板' if x.startswith('68') else ('北交所' if x.startswith(('8', '4', '920')) else '其他'))))
44
- all_lists.append(df_a)
 
 
 
 
 
 
 
 
 
 
45
 
46
- # ETF / LOF / REITs
47
  try:
48
  df_etf = ak.fund_etf_spot_em()[['代码', '名称']]
49
  df_etf.columns = ['code', 'name']
@@ -73,7 +83,8 @@ def get_stock_list() -> pd.DataFrame:
73
  c_code = '代码' if '代码' in df_cb.columns else 'symbol'
74
  c_name = '名称' if '名称' in df_cb.columns else 'name'
75
  df_cb = df_cb[[c_code, c_name]]; df_cb.columns = ['code', 'name']; df_cb['market'] = '可转债'; all_lists.append(df_cb)
76
- except: pass
 
77
 
78
  except Exception as e:
79
  logger.error(f"List fetching error: {e}")
 
37
  """获取全市场标的列表"""
38
  logger.info("Fetching all-market target list...")
39
  all_lists = []
40
+
41
+ max_retries = 3
42
+ for attempt in range(max_retries):
43
+ try:
44
+ df_a = ak.stock_zh_a_spot_em()[['代码', '名称']]
45
+ df_a.columns = ['code', 'name']
46
+ df_a['market'] = df_a['code'].apply(lambda x: '主板' if x.startswith(('60', '00')) else ('创业板' if x.startswith('30') else ('科创板' if x.startswith('68') else ('北交所' if x.startswith(('8', '4', '920')) else '其他'))))
47
+ all_lists.append(df_a)
48
+ break # 成功则退出重试循环
49
+ except Exception as e:
50
+ if attempt == max_retries - 1:
51
+ logger.error(f"Failed to fetch A-stock list after {max_retries} attempts: {e}")
52
+ else:
53
+ logger.warning(f"Attempt {attempt + 1} failed, retrying... Error: {e}")
54
+ time.sleep(5) # 重试前等待 5 秒
55
 
56
+ # ETF / LOF / REITs (增加容错)
57
  try:
58
  df_etf = ak.fund_etf_spot_em()[['代码', '名称']]
59
  df_etf.columns = ['code', 'name']
 
83
  c_code = '代码' if '代码' in df_cb.columns else 'symbol'
84
  c_name = '名称' if '名称' in df_cb.columns else 'name'
85
  df_cb = df_cb[[c_code, c_name]]; df_cb.columns = ['code', 'name']; df_cb['market'] = '可转债'; all_lists.append(df_cb)
86
+ except Exception as e:
87
+ logger.warning(f"Convertible bond list fetch failed: {e}")
88
 
89
  except Exception as e:
90
  logger.error(f"List fetching error: {e}")