osamabyc86 commited on
Commit
9a50f68
ยท
verified ยท
1 Parent(s): d253841

Upload 2 files

Browse files
Files changed (2) hide show
  1. main.py +54 -16
  2. peer_discovery.py +27 -1
main.py CHANGED
@@ -25,20 +25,8 @@ def start_external_server():
25
  subprocess.Popen([sys.executable, os.path.join(os.getcwd(), "external_server.py")])
26
  except Exception as e:
27
  logging.error(f"โŒ ุฎุทุฃ ููŠ ุชุดุบูŠู„ external_server.py: {e}")
28
- import socket
29
-
30
- def get_free_port(start_port=7520, max_port=7600):
31
- port = start_port
32
- while port <= max_port:
33
- with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
34
- try:
35
- s.bind(("0.0.0.0", port))
36
- return port # ู‡ุฐุง ุงู„ุจูˆุฑุช ู…ุชุงุญ
37
- except OSError:
38
- port += 1
39
- raise RuntimeError("๐Ÿšซ ู„ุง ูŠูˆุฌุฏ ุจูˆุฑุช ู…ุชุงุญ ููŠ ุงู„ู†ุทุงู‚ ุงู„ู…ุญุฏุฏ.")
40
-
41
- # โ”€
42
  FILE = Path(__file__).resolve()
43
  BASE_DIR = FILE.parent
44
  PROJECT_ROOT = BASE_DIR.parent
@@ -83,7 +71,7 @@ except ImportError as e:
83
  sys.exit(1)
84
 
85
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุซุงุจุชุงุช ุงู„ุชู‡ูŠุฆุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
86
- CPU_PORT = 7520
87
  SHARED_SECRET = os.getenv("SHARED_SECRET", "my_shared_secret_123")
88
  PYTHON_EXE = sys.executable
89
 
@@ -133,7 +121,7 @@ def run_task():
133
  def start_flask_server():
134
  ip_public = os.getenv("PUBLIC_IP", "127.0.0.1")
135
  logging.info(f"๐ŸŒ Flask ู…ุชูˆูุฑ ุนู„ู‰: http://{ip_public}:{CPU_PORT}/run_task")
136
- flask_app.run(host="0.0.0.0", port=7520, debug=False)
137
 
138
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุฎุฏู…ุงุช ุฎู„ููŠุฉ ู…ุญู„ูŠุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
139
  def start_services():
@@ -234,6 +222,56 @@ def start_ram_manager(
234
  # ุชุดุบูŠู„ู‡ ููŠ ุฎูŠุท ู…ู†ูุตู„ ุญุชู‰ ู„ุง ูŠุญุฌุจ main loop
235
  threading.Thread(target=ram_manager.main, daemon=True).start()
236
  print(f"[MAIN] ram_manager ุดุบู‘ูŽุงู„ ุนู„ู‰ ุงู„ุจูˆุฑุช {port}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุงู„ุฏุงู„ุฉ ุงู„ุฑุฆูŠุณูŠุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
239
  def main():
 
25
  subprocess.Popen([sys.executable, os.path.join(os.getcwd(), "external_server.py")])
26
  except Exception as e:
27
  logging.error(f"โŒ ุฎุทุฃ ููŠ ุชุดุบูŠู„ external_server.py: {e}")
28
+
29
+ # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุถุจุท ุงู„ู…ุณุงุฑุงุช โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
 
 
 
 
 
 
 
 
 
 
 
 
30
  FILE = Path(__file__).resolve()
31
  BASE_DIR = FILE.parent
32
  PROJECT_ROOT = BASE_DIR.parent
 
71
  sys.exit(1)
72
 
73
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุซุงุจุชุงุช ุงู„ุชู‡ูŠุฆุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
74
+ CPU_PORT = int(os.getenv("CPU_PORT", "7520"))
75
  SHARED_SECRET = os.getenv("SHARED_SECRET", "my_shared_secret_123")
76
  PYTHON_EXE = sys.executable
77
 
 
121
  def start_flask_server():
122
  ip_public = os.getenv("PUBLIC_IP", "127.0.0.1")
123
  logging.info(f"๐ŸŒ Flask ู…ุชูˆูุฑ ุนู„ู‰: http://{ip_public}:{CPU_PORT}/run_task")
124
+ flask_app.run(host="0.0.0.0", port=CPU_PORT, debug=False)
125
 
126
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุฎุฏู…ุงุช ุฎู„ููŠุฉ ู…ุญู„ูŠุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
127
  def start_services():
 
222
  # ุชุดุบูŠู„ู‡ ููŠ ุฎูŠุท ู…ู†ูุตู„ ุญุชู‰ ู„ุง ูŠุญุฌุจ main loop
223
  threading.Thread(target=ram_manager.main, daemon=True).start()
224
  print(f"[MAIN] ram_manager ุดุบู‘ูŽุงู„ ุนู„ู‰ ุงู„ุจูˆุฑุช {port}")
225
+ # --- ุฃุถูู ุงู„ุฏุงู„ุฉ ุงู„ุฌุฏูŠุฏุฉ ููŠ ุฃูŠ ู…ูƒุงู† ู‚ุจู„ main() -----------------
226
+ def connect_until_success():
227
+ """
228
+ ูŠุฏูˆุฑ ุนู„ู‰ ูƒู„ CENTRAL_REGISTRY_SERVERS ูˆูƒู„ ู…ู†ูุฐ ููŠ RPORTS
229
+ ุญุชู‰ ูŠู†ุฌุญ ุงู„ุชุณุฌูŠู„ุŒ ุซู… ูŠูุนูŠุฏ ุงู„ุณูŠุฑูุฑ ูˆุงู„ู‚ุงุฆู…ุฉ ุงู„ุฃูˆู„ูŠุฉ ู„ู„ุฃู‚ุฑุงู†.
230
+ """
231
+ global PORT, current_server_index
232
+ while True:
233
+ for port in RPORTS: # ุฌุฑู‘ุจ ูƒู„ ุงู„ู…ู†ุงูุฐ
234
+ for idx, server in enumerate(CENTRAL_REGISTRY_SERVERS):
235
+ info = {
236
+ "node_id": os.getenv("NODE_ID", socket.gethostname()),
237
+ "ip": get_local_ip(),
238
+ "port": port
239
+ }
240
+ try:
241
+ resp = requests.post(f"{server}/register",
242
+ json=info, timeout=5)
243
+ resp.raise_for_status() # ู†ุฌุงุญ
244
+ PORT = port # ุซุจู‘ุช ุงู„ู…ู†ูุฐ ุงู„ู†ู‡ุงุฆูŠ
245
+ current_server_index = idx
246
+ print(f"โœ… Connected: {server} on port {PORT}")
247
+ return server, resp.json() # peers_list
248
+ except Exception:
249
+ pass
250
+ time.sleep(5) # ุฃุนุฏ ุงู„ู…ุญุงูˆู„ุฉ ุจุนุฏ 5 ุซูˆุงู†ู
251
+ # ----------------------------------------------------------------
252
+
253
+ def main():
254
+ logging.basicConfig(level=logging.INFO)
255
+ print("๐Ÿš€ Peer Discovery System starting...")
256
+
257
+ # ุฎูŠูˆุท ุงูƒุชุดุงู/ุชุณุฌูŠู„ LAN
258
+ threading.Thread(target=register_service_lan, daemon=True).start()
259
+ threading.Thread(target=discover_lan_loop, daemon=True).start()
260
+
261
+ # โฌ‡๏ธ ุจุฏู‘ู„ register_with_central() ุจู‡ุฐุง ุงู„ู…ู‚ุทุน
262
+ server, peers = connect_until_success() # ู„ุง ูŠุฎุฑุฌ ุฅู„ุง ุนู†ุฏ ุงู„ู†ุฌุงุญ
263
+ for p in peers: # ุฃุถู ุงู„ุฃู‚ุฑุงู† ุงู„ุฃูˆู„ูŠู‘ูŠู†
264
+ peer_url = f"http://{p['ip']}:{p['port']}/run"
265
+ PEERS.add(peer_url)
266
+
267
+ # ุงุณุชู…ุฑู‘ ููŠ ู…ุฒุงู…ู†ุฉ ุงู„ุณู‘ูŠุฑูุฑ ุงู„ู…ุฑูƒุฒูŠ
268
+ threading.Thread(target=fetch_central_loop, daemon=True).start()
269
+
270
+ try:
271
+ while True:
272
+ time.sleep(60)
273
+ except KeyboardInterrupt:
274
+ print("๐Ÿ›‘ Exiting...")
275
 
276
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ุงู„ุฏุงู„ุฉ ุงู„ุฑุฆูŠุณูŠุฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
277
  def main():
peer_discovery.py CHANGED
@@ -7,7 +7,7 @@ import logging
7
  import requests
8
  from zeroconf import Zeroconf, ServiceInfo, ServiceBrowser
9
  import random
10
- rport = {"7520", "7384" ,"9021" ,"6998" ,"5810" ,"9274" ,"8645" ,"7329" ,"7734" ,"8456" ,"6173" ,"7000" , "8000" }
11
  # ๐Ÿ‘‡ ุฅุนุฏุงุฏ ุงู„ู€ peer discovery ุนุจุฑ LAN ูˆInternet
12
  SERVICE = "_tasknode._tcp.local."
13
  PORT = int(os.getenv("CPU_PORT", random.choice(list(rport))))
@@ -135,6 +135,32 @@ def fetch_central_loop():
135
  except Exception as e:
136
  print(f"โš ๏ธ Fetch central peers failed on {server}: {e}")
137
  time.sleep(300)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
  # ๐Ÿš€ Main
140
  def main():
 
7
  import requests
8
  from zeroconf import Zeroconf, ServiceInfo, ServiceBrowser
9
  import random
10
+ rport = {"7520", "7384" ,"9021" ,"6998" ,"5810" ,"9274" ,"8645" ,"7329" ,"7734" ,"8456" ,"6173","7860" }
11
  # ๐Ÿ‘‡ ุฅุนุฏุงุฏ ุงู„ู€ peer discovery ุนุจุฑ LAN ูˆInternet
12
  SERVICE = "_tasknode._tcp.local."
13
  PORT = int(os.getenv("CPU_PORT", random.choice(list(rport))))
 
135
  except Exception as e:
136
  print(f"โš ๏ธ Fetch central peers failed on {server}: {e}")
137
  time.sleep(300)
138
+ def connect_until_success():
139
+ """
140
+ ูŠุญุงูˆู„ ุงู„ุงุชุตุงู„ ุจูƒู„ ุณูŠุฑูุฑ ููŠ CENTRAL_REGISTRY_SERVERS
141
+ ุนู„ู‰ ูƒู„ ู…ู†ูุฐ ููŠ RPORTS ุจุงู„ุชุชุงุจุน (ู…ุน ุชุฃุฎูŠุฑ ุจุณูŠุท).
142
+ ู„ุง ูŠุฎุฑุฌ ุฅู„ุง ุจุนุฏ ู†ุฌุงุญ ุงู„ุชุณุฌูŠู„ุŒ ูˆูŠูุนูŠุฏ ุงู„ุณูŠุฑูุฑ ุงู„ู…ุฎุชุงุฑ ูˆู‚ุงุฆู…ุฉ ุงู„ุฃู‚ุฑุงู†.
143
+ """
144
+ global PORT, current_server_index
145
+ while True:
146
+ for port in RPORTS: # ุฌุฑู‘ุจ ูƒู„ ุงู„ู…ู†ุงูุฐ
147
+ for idx, server in enumerate(CENTRAL_REGISTRY_SERVERS):
148
+ info = {
149
+ "node_id": os.getenv("NODE_ID", socket.gethostname()),
150
+ "ip": get_local_ip(),
151
+ "port": port
152
+ }
153
+ try:
154
+ resp = requests.post(f"{server}/register",
155
+ json=info, timeout=5)
156
+ resp.raise_for_status() # ู†ุฌุงุญ
157
+ PORT = port # ุซุจู‘ุช ุงู„ู…ู†ูุฐ ุงู„ู†ุงุฌุญ
158
+ current_server_index = idx # ุญุฏู‘ุซ ุงู„ู…ุคุดู‘ุฑ
159
+ print(f"โœ… Connected: {server} on port {PORT}")
160
+ return server, resp.json() # peers_list
161
+ except Exception as e:
162
+ logging.info("โŒ %s:%s -> %s", server, port, e)
163
+ time.sleep(5) # ุงู†ุชุธุฑ ู‚ู„ูŠู„ุงู‹ ุซู… ุฃูŽุนูุฏ ุงู„ูƒุฑู‘ุฉ
164
 
165
  # ๐Ÿš€ Main
166
  def main():