File size: 1,995 Bytes
494c9e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
"""
HF Space 保活脚本

每隔一定时间向 Space 发起一次小分析请求,防止长时间无请求导致首次调用变慢。
适用于公开 Space,无需 HF Token。
"""

import argparse
import sys
import time

try:
    import requests
except ImportError:
    print("错误: 需要安装 requests 库")
    print("请运行: pip install requests")
    sys.exit(1)

API_ENDPOINT = "/api/analyze"
# 保活用极短文本,减少计算量
KEEPALIVE_TEXT = "just for keep hf space hot"


def main():
    parser = argparse.ArgumentParser(description="HF Space 保活 - 定期发起小分析请求防止冷启动")
    parser.add_argument(
        "url",
        nargs="?",
        default="https://dqy08-inforadar.hf.space",
        help="Space 地址(默认: dqy08-inforadar)",
    )
    parser.add_argument(
        "-i", "--interval",
        type=int,
        default=20,
        help="请求间隔(分钟),默认 20",
    )
    parser.add_argument(
        "-q", "--quiet",
        action="store_true",
        help="安静模式,仅输出错误",
    )
    args = parser.parse_args()

    base_url = args.url.rstrip("/")
    api_url = f"{base_url}{API_ENDPOINT}"
    interval_sec = args.interval * 60

    if not args.quiet:
        print(f"保活目标: {api_url}")
        print(f"间隔: {args.interval} 分钟")
        print("按 Ctrl+C 停止\n")

    while True:
        try:
            r = requests.post(
                api_url,
                json={"text": KEEPALIVE_TEXT, "model": "default"},
                headers={"Content-Type": "application/json"},
                timeout=120,
            )
            status = "✓" if r.ok else "✗"
            if not args.quiet:
                print(f"{time.strftime('%H:%M:%S')} {status} {r.status_code}")
        except Exception as e:
            print(f"{time.strftime('%H:%M:%S')} ✗ 请求失败: {e}")

        time.sleep(interval_sec)


if __name__ == "__main__":
    main()