Добавлен прокси-сервер для перенаправления запросов от фронтенда к API
Browse files
app.py
CHANGED
@@ -8,6 +8,10 @@ from pathlib import Path
|
|
8 |
import signal
|
9 |
import threading
|
10 |
import shutil
|
|
|
|
|
|
|
|
|
11 |
|
12 |
def check_and_create_property_json():
|
13 |
"""Проверяет наличие property.json и создает его при необходимости"""
|
@@ -44,6 +48,57 @@ def check_and_create_property_json():
|
|
44 |
|
45 |
print(f"Файл {property_path} создан успешно")
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
def check_files():
|
48 |
"""Проверяет и выводит информацию о важных файлах"""
|
49 |
files_to_check = [
|
@@ -132,6 +187,11 @@ def main():
|
|
132 |
test_thread.daemon = True
|
133 |
test_thread.start()
|
134 |
|
|
|
|
|
|
|
|
|
|
|
135 |
# Запускаем Playground UI в режиме dev на порту 7860 (порт Hugging Face)
|
136 |
print("Starting Playground UI in development mode on port 7860...")
|
137 |
os.environ["PORT"] = "7860"
|
|
|
8 |
import signal
|
9 |
import threading
|
10 |
import shutil
|
11 |
+
import http.server
|
12 |
+
import socketserver
|
13 |
+
import urllib.request
|
14 |
+
import urllib.error
|
15 |
|
16 |
def check_and_create_property_json():
|
17 |
"""Проверяет наличие property.json и создает его при необходимости"""
|
|
|
48 |
|
49 |
print(f"Файл {property_path} создан успешно")
|
50 |
|
51 |
+
class ProxyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
52 |
+
def do_POST(self):
|
53 |
+
print(f"Получен запрос: {self.path}")
|
54 |
+
|
55 |
+
# Перенаправляем запрос /api/dev/v1/packages/reload на /graphs
|
56 |
+
if self.path.startswith('/api/dev/v1/packages/reload') or self.path.startswith('/api/designer/v1/packages/reload'):
|
57 |
+
try:
|
58 |
+
print("Перенаправление на /graphs")
|
59 |
+
with urllib.request.urlopen("http://localhost:8080/graphs") as response:
|
60 |
+
data = response.read()
|
61 |
+
|
62 |
+
# Преобразуем данные для нужного формата
|
63 |
+
try:
|
64 |
+
graphs = json.loads(data)
|
65 |
+
formatted_response = {
|
66 |
+
"data": graphs,
|
67 |
+
"status": 200,
|
68 |
+
"message": "Success"
|
69 |
+
}
|
70 |
+
response_data = json.dumps(formatted_response).encode('utf-8')
|
71 |
+
except:
|
72 |
+
response_data = data
|
73 |
+
|
74 |
+
# Отправляем ответ
|
75 |
+
self.send_response(200)
|
76 |
+
self.send_header('Content-Type', 'application/json')
|
77 |
+
self.send_header('Content-Length', len(response_data))
|
78 |
+
self.send_header('Access-Control-Allow-Origin', '*')
|
79 |
+
self.end_headers()
|
80 |
+
self.wfile.write(response_data)
|
81 |
+
print(f"Отправлен ответ: {response_data.decode('utf-8')}")
|
82 |
+
except urllib.error.URLError as e:
|
83 |
+
print(f"Ошибка при перенаправлении: {e}")
|
84 |
+
self.send_error(500, f"Proxy Error: {e}")
|
85 |
+
else:
|
86 |
+
self.send_error(404, "Not Found")
|
87 |
+
|
88 |
+
def do_OPTIONS(self):
|
89 |
+
self.send_response(200)
|
90 |
+
self.send_header('Access-Control-Allow-Origin', '*')
|
91 |
+
self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
|
92 |
+
self.send_header('Access-Control-Allow-Headers', 'Content-Type')
|
93 |
+
self.end_headers()
|
94 |
+
|
95 |
+
def run_proxy_server():
|
96 |
+
"""Запускает прокси-сервер на порту 49483"""
|
97 |
+
handler = ProxyHTTPRequestHandler
|
98 |
+
httpd = socketserver.TCPServer(("", 49483), handler)
|
99 |
+
print("Прокси-сервер запущен на порту 49483")
|
100 |
+
httpd.serve_forever()
|
101 |
+
|
102 |
def check_files():
|
103 |
"""Проверяет и выводит информацию о важных файлах"""
|
104 |
files_to_check = [
|
|
|
187 |
test_thread.daemon = True
|
188 |
test_thread.start()
|
189 |
|
190 |
+
# Запускаем прокси-сервер на порту 49483
|
191 |
+
proxy_thread = threading.Thread(target=run_proxy_server)
|
192 |
+
proxy_thread.daemon = True
|
193 |
+
proxy_thread.start()
|
194 |
+
|
195 |
# Запускаем Playground UI в режиме dev на порту 7860 (порт Hugging Face)
|
196 |
print("Starting Playground UI in development mode on port 7860...")
|
197 |
os.environ["PORT"] = "7860"
|