Update web.py
Browse files
web.py
CHANGED
@@ -1,6 +1,31 @@
|
|
1 |
from http.server import HTTPServer, BaseHTTPRequestHandler
|
2 |
import datetime
|
3 |
import json
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
class HealthCheckHandler(BaseHTTPRequestHandler):
|
6 |
def do_GET(self):
|
@@ -20,11 +45,56 @@ class HealthCheckHandler(BaseHTTPRequestHandler):
|
|
20 |
|
21 |
# JSON μλ΅ λ°ν
|
22 |
self.wfile.write(json.dumps(status_info).encode())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
|
|
|
|
|
|
24 |
def run_server(port=7860):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
server_address = ('0.0.0.0', port)
|
26 |
httpd = HTTPServer(server_address, HealthCheckHandler)
|
27 |
-
|
|
|
28 |
httpd.serve_forever()
|
29 |
|
30 |
if __name__ == "__main__":
|
|
|
1 |
from http.server import HTTPServer, BaseHTTPRequestHandler
|
2 |
import datetime
|
3 |
import json
|
4 |
+
import threading
|
5 |
+
import time
|
6 |
+
import requests
|
7 |
+
import logging
|
8 |
+
from urllib3.exceptions import InsecureRequestWarning
|
9 |
+
|
10 |
+
# SSL κ²½κ³ λΉνμ±ν
|
11 |
+
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
12 |
+
|
13 |
+
# λ‘κΉ
μ€μ
|
14 |
+
logging.basicConfig(
|
15 |
+
level=logging.INFO,
|
16 |
+
format='%(asctime)s - %(levelname)s - %(message)s'
|
17 |
+
)
|
18 |
+
|
19 |
+
# λͺ¨λν°λ§ν URL λͺ©λ‘
|
20 |
+
URLS = [
|
21 |
+
"https://ginipick-openfree-timer1.hf.space",
|
22 |
+
"https://ginipick-openfree-timer2.hf.space",
|
23 |
+
"https://ginipick-openfree-LLM-chatgpt4.1-thinkflow.hf.space",
|
24 |
+
"https://seawolf2357-ofai-jinjavis-blog-pharm.hf.space"
|
25 |
+
]
|
26 |
+
|
27 |
+
# ν κ°κ²© (μ΄) - νκΉ
νμ΄μ€ μ¬λ¦½ νμμμλ³΄λ€ μ§§μμΌ ν¨
|
28 |
+
PING_INTERVAL = 300 # 5λΆλ§λ€ ν
|
29 |
|
30 |
class HealthCheckHandler(BaseHTTPRequestHandler):
|
31 |
def do_GET(self):
|
|
|
45 |
|
46 |
# JSON μλ΅ λ°ν
|
47 |
self.wfile.write(json.dumps(status_info).encode())
|
48 |
+
|
49 |
+
def check_url(url):
|
50 |
+
"""URL μνλ₯Ό νμΈνκ³ κ²°κ³Όλ₯Ό λ°νν©λλ€."""
|
51 |
+
try:
|
52 |
+
# HEAD μμ²μ΄ GETλ³΄λ€ λΉ λ¦ (λ³Έλ¬Έ μμ΄ ν€λλ§ λ°ν)
|
53 |
+
response = requests.head(
|
54 |
+
url,
|
55 |
+
verify=False, # SSL κ²μ¦ λΉνμ±ν
|
56 |
+
timeout=10, # νμμμ μ€μ
|
57 |
+
allow_redirects=True # 리λ€μ΄λ νΈ νμ©
|
58 |
+
)
|
59 |
+
status_code = response.status_code
|
60 |
+
|
61 |
+
# 200 OKμΈ κ²½μ° μ±κ³΅
|
62 |
+
if status_code == 200:
|
63 |
+
result = f"μν μ½λ: {status_code}, μ μ μν: μ μ μ±κ³΅"
|
64 |
+
else:
|
65 |
+
result = f"μν μ½λ: {status_code}, μ μ μν: μ μ μ€ν¨"
|
66 |
+
except Exception as e:
|
67 |
+
result = f"μ μ μ€ν¨: {str(e)}"
|
68 |
+
|
69 |
+
logging.info(f"URL: {url} {result}")
|
70 |
+
return result
|
71 |
+
|
72 |
+
def ping_thread():
|
73 |
+
"""
|
74 |
+
μ£ΌκΈ°μ μΌλ‘ URLλ€μ νμΈνμ¬ μ¬λ¦½ λͺ¨λλ‘ μ νλμ§ μλλ‘ ν©λλ€.
|
75 |
+
"""
|
76 |
+
logging.info("μλ ν μ€λ λ μμ")
|
77 |
+
|
78 |
+
while True:
|
79 |
+
for url in URLS:
|
80 |
+
check_url(url)
|
81 |
|
82 |
+
# λ€μ νκΉμ§ λκΈ°
|
83 |
+
time.sleep(PING_INTERVAL)
|
84 |
+
|
85 |
def run_server(port=7860):
|
86 |
+
"""
|
87 |
+
ν¬μ€ μ²΄ν¬ μλ²λ₯Ό μ€ννκ³ λμμ λ°±κ·ΈλΌμ΄λ ν μ€λ λλ₯Ό μμν©λλ€.
|
88 |
+
"""
|
89 |
+
# ν μ€λ λ μμ
|
90 |
+
ping_task = threading.Thread(target=ping_thread, daemon=True)
|
91 |
+
ping_task.start()
|
92 |
+
|
93 |
+
# μΉ μλ² μ€μ
|
94 |
server_address = ('0.0.0.0', port)
|
95 |
httpd = HTTPServer(server_address, HealthCheckHandler)
|
96 |
+
|
97 |
+
logging.info(f"Starting health check server on port {port}")
|
98 |
httpd.serve_forever()
|
99 |
|
100 |
if __name__ == "__main__":
|