Skip to content

Latest commit

 

History

History
74 lines (55 loc) · 3.5 KB

File metadata and controls

74 lines (55 loc) · 3.5 KB

main.py — Web entrypoint

职责

无参启动 FastAPI Web 服务(api.app:app),并按配置可选拉起钉钉/飞书 Bot Stream 客户端。 分析、回测、推送等业务流程不再通过 CLI 参数驱动,全部通过 web UI 与 REST API 触发。

文件

文件 行数 职责
main.py ~150 Web 入口、uvicorn 启动、可选 Bot Stream 启动

命令行参数

已无 CLI 参数python main.py 启动后即对外开放 web 服务,按 Ctrl+C 退出。

历史 CLI 参数(--stocks / --ai / --notify / --single-notify / --force-run / --webui / --webui-only / --serve / --serve-only / --port / --host / --no-context-snapshot / --backtest*)已全部删除。同等功能改为:

旧 CLI 等价的 web 入口
--stocks AAPL --ai POST /api/v1/analysis/analyze
--backtest POST /api/v1/backtest/...
--notify 由 pipeline send_notification 参数控制(API 调用方传入)
--port / --host 环境变量 WEBUI_PORT / WEBUI_HOST(默认 0.0.0.0:8000

环境变量

变量 默认 说明
WEBUI_HOST 0.0.0.0(main.py 的运行时默认;Config.webui_host 仍保留 127.0.0.1 给老代码兼容) uvicorn 监听地址
WEBUI_PORT 8000(环境变量未设时回退到 Config.webui_port uvicorn 监听端口
USE_PROXY false true 时按 PROXY_HOST:PROXY_PORT 设置 http(s)_proxy(本地开发用)
DINGTALK_STREAM_ENABLED false 启动钉钉 Stream 客户端(需 pip install dingtalk-stream
FEISHU_STREAM_ENABLED false 启动飞书 Stream 客户端(需 pip install lark-oapi

核心函数

main() -> int

程序入口:加载配置 → 初始化日志 → 解析监听地址 → start_api_serverstart_bot_stream_clientstime.sleep 守护主线程。

start_api_server(host, port, config)

后台线程启动 uvicorn 加载 api.app:applog_config=None 让 uvicorn 复用应用日志器。

start_bot_stream_clients(config)

dingtalk_stream_enabled / feishu_stream_enabled 决定是否启动 Stream 客户端;SDK 缺失或抛错只记日志,不影响 web 服务

_resolve_bind_address(config)

WEBUI_HOST / WEBUI_PORT 环境变量读取监听地址,回退到 config.webui_host/port

调用关系

main()
├─ get_config()                          # stocklens/config/settings.py
├─ setup_logging()                       # stocklens/utils/logging_setup.py
├─ start_api_server()
│   └─ uvicorn → api.app:app             # api/app.py(含 long_pool/io_pool)
└─ start_bot_stream_clients()
    ├─ DingTalkStream                    # bot/platforms/
    └─ FeishuStream                      # bot/platforms/

注意事项

  • 不再有 CLI 分析入口:所有 ad-hoc 分析、批量分析、回测、定时调度都通过 web UI / REST API 完成
  • 启动后阻塞主线程,Ctrl+C 触发优雅退出
  • Bot Stream SDK 是可选依赖:未安装时只记 warning,不影响 web 服务
  • USE_PROXY=true 仅在本地开发需要走代理时使用,生产环境保持默认
  • 之前 --force-run / 交易日检查 / 飞书云文档生成 / 自动回测等逻辑已从 main.py 移除;仍保留在 stocklens/pipeline/trading_calendar.pystocklens/utils/feishu_doc.pystocklens/backtest/ 中,由 web/API 层按需调用