4.7 KiB
4.7 KiB
市场扫描Docker定时任务配置
概述
本文档描述如何使用Docker容器定时执行main.py market 200命令进行股票市场扫描分析。
服务组件
1. 市场扫描服务 (trading-market-scanner)
- 容器名称:
trading-ai-market-scanner - 功能: 定时执行股票市场扫描和K线形态分析
- 扫描对象: 同花顺热榜前N只股票
- 通知: 支持钉钉webhook通知
2. 主要文件
market_scanner.py- 市场扫描脚本start_market_scanner.sh- 容器启动脚本crontab/market-scanner- 定时任务配置docker-compose.yml- Docker编排配置
定时任务配置
默认调度计划
# 每个工作日开盘前扫描 (09:00) - 200只股票
0 9 * * 1-5 cd /app && python market_scanner.py 200
# 每个工作日午休时间扫描 (12:30) - 100只股票
30 12 * * 1-5 cd /app && python market_scanner.py 100
# 每个工作日收盘后扫描 (15:30) - 200只股票
30 15 * * 1-5 cd /app && python market_scanner.py 200
# 每周末进行一次深度扫描 (周六 10:00) - 500只股票
0 10 * * 6 cd /app && python market_scanner.py 500
自定义调度
可通过修改 crontab/market-scanner 文件来自定义定时任务:
# 格式: 分钟 小时 日 月 星期 命令
# 每15分钟扫描一次 (交易时间内)
*/15 9-15 * * 1-5 cd /app && python market_scanner.py 50
# 每小时扫描一次
0 * * * * cd /app && python market_scanner.py 100
环境变量配置
必要配置
| 变量名 | 默认值 | 说明 |
|---|---|---|
MARKET_SCAN_STOCKS |
200 | 扫描的股票数量 |
LOG_LEVEL |
INFO | 日志级别 |
MYSQL_HOST |
- | MySQL主机地址 |
MYSQL_PORT |
26558 | MySQL端口 |
MYSQL_USER |
root | MySQL用户名 |
MYSQL_PASSWORD |
- | MySQL密码 |
MYSQL_DATABASE |
tradingai | 数据库名 |
可选配置
| 变量名 | 说明 |
|---|---|
DINGTALK_WEBHOOK_URL |
钉钉通知webhook地址 |
部署步骤
1. 环境配置
复制并编辑环境变量文件:
cp .env.example .env
# 编辑 .env 文件,配置数据库连接和扫描参数
2. 启动服务
# 启动市场扫描服务
docker-compose up -d trading-market-scanner
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f trading-market-scanner
3. 验证部署
# 查看容器状态
docker ps | grep trading-ai-market-scanner
# 查看定时任务配置
docker exec trading-ai-market-scanner cat /etc/cron.d/market-scanner
# 查看扫描日志
docker exec trading-ai-market-scanner tail -f /app/logs/market_scanner.log
日志管理
日志文件位置
/app/logs/market_scanner.log- 市场扫描日志/app/logs/cron.log- Cron执行日志/app/logs/scanner_startup.log- 服务启动日志
日志轮转
- 日志文件按日轮转
- 保留30天历史日志
- 自动压缩旧日志文件
监控和运维
健康检查
服务包含自动重启机制,如果进程异常退出会自动重启。
手动执行扫描
# 进入容器手动执行扫描
docker exec -it trading-ai-market-scanner python market_scanner.py 100
# 查看扫描结果
docker exec trading-ai-market-scanner tail -20 /app/logs/market_scanner.log
修改定时任务
- 编辑
crontab/market-scanner文件 - 重启容器使配置生效:
docker-compose restart trading-market-scanner
调试模式
设置更详细的日志级别:
# 在 .env 文件中设置
LOG_LEVEL=DEBUG
# 重启服务
docker-compose restart trading-market-scanner
注意事项
- 时区设置: 容器使用 Asia/Shanghai 时区
- 资源消耗: 扫描大量股票会消耗较多CPU和内存
- 网络依赖: 需要稳定的网络连接访问股票数据API
- 数据库连接: 确保MySQL数据库可正常连接
- 存储空间: 定期清理日志文件避免磁盘空间不足
故障排除
常见问题
-
容器启动失败
# 查看启动日志 docker-compose logs trading-market-scanner -
定时任务不执行
# 检查cron服务状态 docker exec trading-ai-market-scanner service cron status # 查看cron日志 docker exec trading-ai-market-scanner tail -f /app/logs/cron.log -
数据库连接失败
# 检查环境变量配置 docker exec trading-ai-market-scanner env | grep MYSQL -
内存不足
# 减少扫描股票数量 MARKET_SCAN_STOCKS=50
性能优化
- 根据服务器性能调整扫描频率和股票数量
- 设置合理的日志级别避免过多日志输出
- 定期清理历史数据和日志文件
- 监控服务器资源使用情况