TradingAgents-CN 怎么配置股票基础信息每日定时同步任务?
【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN
在 TradingAgents-CN 中,股票基础信息(股票代码、名称、行业、地区、市值等)通过后端内置的 APScheduler 定时任务从 Tushare/AKShare/BaoStock 等数据源拉取并写入 MongoDB,供后续行情与基本面分析使用。本文的任务是:完成这个"股票基础信息每日定时同步"任务的配置、启动,并确认它按预期每天执行一次。适用环境:已能连通 MongoDB 的后端服务,依赖通过pip install -e .安装(项目依赖中包含APScheduler、motor、pymongo等)。
任务的行为边界
先明确这个定时任务是怎么跑的(依据 scheduled_tasks_guide.md):
- 任务 ID 为
basics_sync_service,每天执行一次(默认北京时间 06:30),而不是持续运行; - 应用启动后会先异步触发一次全量同步(不阻塞启动),之后按配置的时间点每日调度;
- 默认选择 06:30 的原因是避开交易时段、数据源通常已在凌晨更新完前一交易日数据、并在用户开始使用系统前完成同步。
前置条件
依据 stock_basics_sync.md:
- 已正确配置 MongoDB,且能被后端连通;
- 设置环境变量
TUSHARE_TOKEN(Tushare token,由读者自行到 Tushare 申请后填入); - 安装项目依赖:
pip install -e .数据源优先级由启动逻辑决定(见 app/main.py):TUSHARE_ENABLED为true(默认值)时优先顺序为tushare > akshare > baostock;Tushare 被禁用时自动使用akshare > baostock。
配置每日执行时间
所有配置项在 app/core/config.py 中定义,可写入项目根目录的.env文件或系统环境变量:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
SYNC_STOCK_BASICS_ENABLED | bool | true | 是否启用每日同步任务 |
SYNC_STOCK_BASICS_TIME | string | "06:30" | 执行时间,HH:MM格式(24 小时制) |
SYNC_STOCK_BASICS_CRON | string | 空 | CRON 表达式,设置后优先于 TIME 生效 |
TIMEZONE | string | "Asia/Shanghai" | 调度器时区 |
两种配置方式二选一(默认已启用,不改.env即按每天 06:30 执行):
# 方式 1:简单时间(默认) SYNC_STOCK_BASICS_ENABLED=true SYNC_STOCK_BASICS_TIME=06:30 TIMEZONE=Asia/Shanghai # 方式 2:CRON 表达式(例如 30 6 * * * 表示每日 06:30) SYNC_STOCK_BASICS_CRON=30 6 * * * TIMEZONE=Asia/Shanghai # 数据源 token(TUSHARE_TOKEN 替换为你自己的 token) TUSHARE_TOKEN=你的token文档中给出的其他示例:SYNC_STOCK_BASICS_TIME=02:00表示改为每天凌晨 2:00 执行;SYNC_STOCK_BASICS_CRON=0 2 * * 1表示每周一凌晨 2:00 执行。
可选:初始化 MongoDB 索引
同步数据写入 MongoDB 的stock_basic_info集合(按codeupsert),同步状态记录在sync_status集合(job=stock_basics)。项目提供索引初始化脚本 scripts/setup/init_mongodb_indexes.py,为stock_basic_info建code唯一索引及查询/排序索引,为sync_status建job唯一索引等。运行方式(使用当前环境变量连接 MongoDB):
python scripts/setup/init_mongodb_indexes.py注意文档中的提示:若stock_basic_info中首次已存在重复code数据,唯一索引创建会失败,需要先对数据去重再建索引。
启动后端并确认任务已注册
python -m uvicorn app.main:app --reload启动后做两件事确认定时任务已挂上:
- 看启动日志。调度注册时的日志(以下为文档示例输出):
[INFO] 📅 Stock basics sync scheduled daily at 06:30 (Asia/Shanghai)若配置了 CRON,则显示Stock basics sync scheduled by CRON: <你的CRON> (Asia/Shanghai)。
- 查调度器接口(app/routers/scheduler.py 提供):
# 查看调度器状态 GET /api/scheduler/status # 查看所有任务,确认 basics_sync_service 存在及其下次执行时间 GET /api/scheduler/jobs前端同样可以查看:运行python web/run_web.py或streamlit run web/app.py打开 Streamlit,在侧边栏选择「🔧 系统状态」,可以看到任务是否运行中、下次执行时间与倒计时。
手动触发一次同步并核对结果
不需要等到 06:30,可以通过 API 立即触发一次全量同步来验证整条链路是否可用:
# 多数据源同步(定时任务实际调用的入口,支持自动切换数据源) POST /api/sync/multi-source/stock_basics/run # 指定优先数据源(逗号分隔) POST /api/sync/multi-source/stock_basics/run?preferred_sources=akshare,baostock # 强制执行(即使正在运行) POST /api/sync/multi-source/stock_basics/run?force=true单数据源入口也保留着(app/routers/sync.py):POST /api/sync/stock_basics/run,同样支持force参数。
触发后查看状态:
# 查看股票基础信息同步状态 GET /api/sync/stock_basics/status状态接口的成功判定(见 app/routers/multi_source_sync.py):返回结果中status为success或success_with_errors时接口标记为成功;failed时接口返回失败并附错误信息;若任务已在运行,返回running提示。同步执行期间的日志(文档示例):
[INFO] Stock basics sync started [INFO] Successfully fetched 5438 stocks from tushare [INFO] Stock basics sync completed: 5438 total, 0 inserted, 5438 updated文档给出的完整执行流程示例(一次同步通常耗时 30-60 秒):
06:30:00 ─→ 任务触发 06:30:01 ─→ 检查是否已在运行(防止重复) 06:30:02 ─→ 从数据源获取股票列表(5000+ 只) 06:30:15 ─→ 获取最新交易日期 06:30:20 ─→ 获取每日基础数据(市值、ROE等) 06:30:45 ─→ 批量更新 MongoDB 06:31:00 ─→ 任务完成,状态更新为 "success"前端「🔧 系统状态」页面上也可以直接点击「🔄 手动运行全量同步」按钮触发,等效于上述 API 调用。
调整、禁用与排查
修改时间:改.env中的SYNC_STOCK_BASICS_TIME或SYNC_STOCK_BASICS_CRON,然后重启应用生效。
禁用定时任务:
SYNC_STOCK_BASICS_ENABLED=false禁用后只能手动触发同步。
排查时按文档记录的已知现象核对(stock_basics_sync.md、scheduled_tasks_guide.md):
- Tushare 未配置:状态为
failed,message 提示 token 缺失。先补齐TUSHARE_TOKEN或确认 AKShare/BaoStock 可用; - 当日无交易数据:脚本会回退查找最近有数据的交易日,属正常行为;
- 任务长时间显示"运行中":可能是数据源响应慢或数据量大(5000+ 只股票)。先查日志确认任务是否真的在跑;若卡住,可重启应用或使用
force=true参数强制重新执行; - 首次全量同步数据量大:关注日志与 MongoDB 写入速率。
限制说明
- 定时调度只覆盖"每日一次"的基础信息同步;实时行情是另一个独立任务(每 30 秒、仅交易时段),不在本文范围内。
- 数据写入以"亿元人民币"为单位的
total_mv/circ_mv(Tushare 原始"万元"除以 1e4);pe、pb、pe_ttm、pb_mrq、turnover_rate、volume_ratio保持原始数值。 - 两篇文档对数据集合的命名不完全一致:scheduled_tasks_guide.md 写作
stock_basics,stock_basics_sync.md 写作stock_basic_info;按后者描述的字段与索引脚本核对时以stock_basic_info为准。 - 配置修改都需要重启应用后才生效,调度器不会热加载
.env。
【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考