yangtb24 commited on
Commit
e0d8145
·
verified ·
1 Parent(s): 9adbd45

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -21
app.py CHANGED
@@ -1,4 +1,4 @@
1
- from flask import Flask, render_template, Response
2
  import requests
3
  import json
4
  from threading import Lock, Thread
@@ -349,29 +349,35 @@ def connect_and_listen(instance):
349
  url = f"https://api.hf.space/v1/{username}/{space_id}/live-metrics/sse"
350
  print(f"Connecting to SSE for space: {space_id}")
351
 
352
- while True: # 持续重连循环
353
  try:
354
- response = requests.get(url, stream=True)
355
- response.raise_for_status() # 检查请求是否成功
 
 
356
  event_sources[space_id] = response
357
 
358
- for line in response.iter_lines():
359
- if line:
360
- line = line.decode("utf-8").strip()
361
- # print(f"Received line from SSE ({space_id}): {line}") # 调试
362
- if line.startswith("event: metric"):
363
- data_line = next(response.iter_lines()).decode("utf-8").strip()
364
- if data_line.startswith("data: "):
365
- try:
366
- data = json.loads(data_line[6:])
367
- update_server_data(data, space_id, username)
368
- except json.JSONDecodeError:
369
- print(f"Error decoding JSON for {space_id}: {data_line}")
 
 
 
 
370
 
371
  except requests.exceptions.RequestException as e:
372
  print(f"Connection error for {space_id}: {e}, retrying in 5 seconds...")
373
- time.sleep(5) # 重连间隔
374
- except Exception as e:
375
  print(f"Unexpected error for {space_id}: {e}, retrying in 5 seconds...")
376
  time.sleep(5)
377
 
@@ -430,7 +436,7 @@ def home():
430
  // 1. 移除不再存在的卡片
431
  let currentCards = currentServers.querySelectorAll('.server-card');
432
  currentCards.forEach(card => {{
433
- if (!newServers.querySelector(`#${card.id}`)) {{
434
  card.remove();
435
  }}
436
  }});
@@ -438,7 +444,7 @@ def home():
438
  // 2. 添加/更新卡片
439
  let newCards = newServers.querySelectorAll('.server-card');
440
  newCards.forEach(newCard => {{
441
- let currentCard = currentServers.querySelector(`#${newCard.id}`);
442
  if (currentCard) {{
443
  // 更新现有卡片
444
  currentCard.innerHTML = newCard.innerHTML;
@@ -485,4 +491,4 @@ if __name__ == "__main__":
485
  # 启动后台任务
486
  thread = Thread(target=background_task, daemon=True)
487
  thread.start()
488
- app.run(debug=True, host="0.0.0.0", port=7860)
 
1
+ from flask import Flask, render_template, Response, render_template_string
2
  import requests
3
  import json
4
  from threading import Lock, Thread
 
349
  url = f"https://api.hf.space/v1/{username}/{space_id}/live-metrics/sse"
350
  print(f"Connecting to SSE for space: {space_id}")
351
 
352
+ while True: # 持续重连循环
353
  try:
354
+ # Add the Accept header for SSE
355
+ headers = {'Accept': 'text/event-stream'}
356
+ response = requests.get(url, stream=True, headers=headers)
357
+ response.raise_for_status() # 检查请求是否成功, 4xx or 5xx errors
358
  event_sources[space_id] = response
359
 
360
+ # Check if the response is valid before accessing .raw
361
+ if response and hasattr(response, 'raw'):
362
+ for line in response.iter_lines():
363
+ if line:
364
+ line = line.decode("utf-8").strip()
365
+ # print(f"Received line from SSE ({space_id}): {line}") # 调试
366
+ if line.startswith("event: metric"):
367
+ data_line = next(response.iter_lines()).decode("utf-8").strip()
368
+ if data_line.startswith("data: "):
369
+ try:
370
+ data = json.loads(data_line[6:])
371
+ update_server_data(data, space_id, username)
372
+ except json.JSONDecodeError:
373
+ print(f"Error decoding JSON for {space_id}: {data_line}")
374
+ else:
375
+ print(f"Invalid response from SSE for {space_id}")
376
 
377
  except requests.exceptions.RequestException as e:
378
  print(f"Connection error for {space_id}: {e}, retrying in 5 seconds...")
379
+ time.sleep(5) # 重连间隔
380
+ except Exception as e: # Catch other potential errors
381
  print(f"Unexpected error for {space_id}: {e}, retrying in 5 seconds...")
382
  time.sleep(5)
383
 
 
436
  // 1. 移除不再存在的卡片
437
  let currentCards = currentServers.querySelectorAll('.server-card');
438
  currentCards.forEach(card => {{
439
+ if (!newServers.querySelector(`#${{card.id}}`)) {{ // Corrected string interpolation
440
  card.remove();
441
  }}
442
  }});
 
444
  // 2. 添加/更新卡片
445
  let newCards = newServers.querySelectorAll('.server-card');
446
  newCards.forEach(newCard => {{
447
+ let currentCard = currentServers.querySelector(`#${{newCard.id}}`);
448
  if (currentCard) {{
449
  // 更新现有卡片
450
  currentCard.innerHTML = newCard.innerHTML;
 
491
  # 启动后台任务
492
  thread = Thread(target=background_task, daemon=True)
493
  thread.start()
494
+ app.run(debug=True, host="0.0.0.0", port=7860)