Release v1.3.1 reliability improvements

This commit is contained in:
2026-06-23 00:11:11 +02:00
parent 70121adaf6
commit b9f687f118
8 changed files with 224 additions and 17 deletions
+85 -3
View File
@@ -1,6 +1,6 @@
# Crypto ATR Signal
Version: `v1.3.0`
Version: `v1.3.1`
扫描 Binance Futures 交易对,在 4 小时周期识别已收盘 K 线的大阳 / 大阴信号,并通过 FastAPI 网页展示。
@@ -40,6 +40,13 @@ Version: `v1.3.0`
- 页面增加“全部”视图,支持按市场分组或合并排序。
- 页面默认视图、市场入口、分组和版本信息可通过 `.env` 控制。
## v1.3.1 变化
- Discord 汇总使用当前最新 K 线信号总数,重复扫描不会误报为 0。
- 增加扫描进程锁,避免 Cron 任务重叠。
- 增加 `/health` 健康检查接口。
- TradFi 新部署默认启用实体占比 `0.5` 过滤。
## 项目结构
```text
@@ -92,6 +99,7 @@ cd /www/wwwroot/crypto-atr-signal
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
chmod 600 .env
```
## 配置
@@ -104,7 +112,7 @@ CRYPTO_MIN_BODY_RATIO=0.5
TRADFI_ATR_LENGTH=14
TRADFI_ATR_MULTIPLE=1.5
TRADFI_BODY_RATIO_FILTER_ENABLED=false
TRADFI_BODY_RATIO_FILTER_ENABLED=true
TRADFI_MIN_BODY_RATIO=0.5
DISCORD_ENABLED=false
@@ -117,6 +125,9 @@ PAGE_SHOW_TRADFI=true
PAGE_GROUP_BY_MARKET=true
PAGE_SHOW_VERSION=true
SCAN_LOCK_PATH=data/scanner.lock
HEALTH_MAX_SCAN_AGE_HOURS=8
INIT_KLINES_LIMIT=40
CONCURRENCY=10
MAX_RETRIES=3
@@ -207,6 +218,77 @@ sudo systemctl start crypto-atr-signal
sudo systemctl status crypto-atr-signal
```
## Nginx 反向代理
FastAPI 只监听 `127.0.0.1:8000`,公网访问交给 Nginx
```nginx
server {
listen 80;
server_name signal.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
修改域名后执行:
```bash
sudo nginx -t
sudo systemctl reload nginx
```
生产环境建议为域名配置 HTTPS;如果页面只供客户使用,可在 Nginx 增加访问认证。
## 健康检查
```bash
curl http://127.0.0.1:8000/health
```
数据库正常、Crypto 与 TradFi 最近一次扫描成功且未超过 `HEALTH_MAX_SCAN_AGE_HOURS` 时返回 HTTP `200`。数据库异常、扫描失败或超时未运行时返回 HTTP `503`,可直接接入宝塔或 Uptime Kuma。
## 数据库备份与恢复
使用 SQLite 自带的在线备份命令,不需要停止网页服务:
```bash
cd /www/wwwroot/crypto-atr-signal
mkdir -p backups
sqlite3 data/app.db ".backup 'backups/app-$(date +%F-%H%M).db'"
```
恢复前先停止网页服务,并确保扫描任务没有运行:
```bash
sudo systemctl stop crypto-atr-signal
cp backups/app-YYYY-MM-DD-HHMM.db data/app.db
sudo systemctl start crypto-atr-signal
```
## 常见故障排查
```bash
# 查看网页服务状态和最近日志
sudo systemctl status crypto-atr-signal
sudo journalctl -u crypto-atr-signal -n 100 --no-pager
# 手动执行一轮聚合扫描
cd /www/wwwroot/crypto-atr-signal
.venv/bin/python scanner.py --market all
# 检查网页和数据库健康状态
curl -i http://127.0.0.1:8000/health
```
如果日志出现 `another scanner process is already running`,说明上一轮尚未结束,本轮已被进程锁安全跳过,无需手动删除锁文件。
## 页面功能
- Crypto / TradFi 市场切换
@@ -238,7 +320,7 @@ PRAGMA journal_mode = WAL;
- FastAPI 常驻
- SQLite
- cron 每 4 小时分别扫描 Crypto 和 TradFi
- cron 每 4 小时聚合扫描 Crypto 和 TradFi
- Nginx 反向代理
建议: