File size: 1,707 Bytes
31db1d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
613f6dc
31db1d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask import Flask, request, Response, jsonify
import requests
import threading
import time
import random
import logging
from typing import Optional

app = Flask(__name__)

# =========================
# CONFIG
# =========================
Server  = [
    "https://techbitforge-webui.hf.space/api/models",
    "https://techbitforge-hello-server.hf.space"
]
PING_INTERVAL = 120
REQUEST_TIMEOUT = 300

# =========================
# LOGGING
# =========================
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s — %(levelname)s — %(message)s"
)
logger = logging.getLogger("proxy")


# =========================
# HEALTH CHECK
# =========================
@app.route("/", methods=["GET"])
def home():
    return jsonify({"status": "running", "service": "HF Proxy"})


# =========================
# KEEP ALIVE PINGER
# =========================
HEADERS = {"User-Agent": "HF-Proxy-KeepAliveBot"}


def keep_alive_worker():
    while True:
        logger.info("Pinging HF servers...")
        for url in Server:
            try:
                r = requests.get(url, headers=HEADERS, timeout=8)
                logger.info(f"{url}{r.status_code}")
            except Exception as e:
                logger.warning(f"{url} → ERROR: {e}")
        time.sleep(PING_INTERVAL)


def start_background_thread():
    thread = threading.Thread(target=keep_alive_worker, daemon=True)
    thread.start()
    logger.info("Background keep-alive thread started")


# =========================
# MAIN
# =========================
if __name__ == "__main__":
    start_background_thread()
    app.run(
        host="0.0.0.0",
        port=7860,
        threaded=True,
        debug=False
    )