Streamlit 动态分析
作用
Streamlit 用于做比静态 HTML 更灵活的数据应用,适合筛选、查询和探索分析。
推荐页面
- 总览指标
- 日期与小时趋势
- 类目分析
- 用户分层
- 转化漏斗
- 推荐结果查询
- 数据口径说明
数据来源
优先读取汇总层文件,不读取原始大 CSV:
data/
├── daily_metrics.csv
├── hourly_metrics.csv
├── category_metrics.csv
├── user_segment.csv
├── funnel_metrics.csv
└── recommend_sample.csv
也可以读取 DuckDB 或 Parquet 汇总文件。
运行方式
推荐使用独立 Python 虚拟环境:
python3 -m venv /opt/shixun/streamlit/.venv
/opt/shixun/streamlit/.venv/bin/pip install streamlit pandas plotly duckdb
/opt/shixun/streamlit/.venv/bin/streamlit run /opt/shixun/streamlit/app.py --server.port=8501 --server.address=127.0.0.1
对外访问时通过 Nginx 反向代理到 /app/。
Nginx 反向代理要点
Streamlit 官方建议在生产环境中由反向代理或负载均衡处理 HTTPS。服务本身监听本机地址,Nginx 对外暴露路径。
推荐内部端口:
127.0.0.1:8501
如果 Streamlit 挂载到 /app/,启动参数需要包含:
--server.baseUrlPath=app
Nginx 中 proxy_pass 不要在端口后加尾部斜杠,否则 /app/ 前缀会被剥掉:
location ^~ /app/ {
proxy_pass http://127.0.0.1:8501;
}
使用 ^~ 是为了避免宝塔默认的 .js、.css 等静态资源正则 location 抢先处理 /app/static/...,否则页面 HTML 可能正常返回,但前端资源返回 404,浏览器表现为空白页。
运维建议
- 用
systemd或宝塔 Python 项目管理器保持运行。 - 答辩前准备静态 HTML 和截图作为备用。
- 不把原始 CSV 放入 Streamlit 应用目录。