yangtb24 commited on
Commit
953aa23
·
verified ·
1 Parent(s): a231d4e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -15
app.py CHANGED
@@ -443,24 +443,26 @@ def get_instances():
443
 
444
  @app.route('/metrics/<username>/<instance_id>')
445
  def stream_metrics(username, instance_id):
446
- # Use requests.get with stream=True for SSE
447
  url = f"https://api.hf.space/v1/{username}/{instance_id}/live-metrics/sse"
448
 
449
  def generate():
450
- try:
451
- response = requests.get(url, stream=True, headers={"Accept": "text/event-stream"})
452
- response.raise_for_status() # Important: raise HTTP errors
453
- client = SSEClient(response)
454
- for event in client.events():
455
- if event.event == 'metric':
456
- yield f"event: {event.event}\\ndata: {event.data}\\n\\n"
457
- except requests.exceptions.RequestException as e:
458
- print(f"Request Exception: {e}")
459
- yield f"event: error\ndata: Connection error\n\n" # Send an error event
460
- except Exception as e:
461
- print(f"An error occurred: {e}")
462
- yield f"event: error\ndata: An error occurred\n\n"
463
-
 
 
 
464
 
465
  return Response(generate(), mimetype='text/event-stream')
466
 
 
443
 
444
  @app.route('/metrics/<username>/<instance_id>')
445
  def stream_metrics(username, instance_id):
 
446
  url = f"https://api.hf.space/v1/{username}/{instance_id}/live-metrics/sse"
447
 
448
  def generate():
449
+ session = requests.Session() # Create a session object
450
+ try:
451
+ # Add a timeout (e.g., 10 seconds)
452
+ response = session.get(url, stream=True, headers={"Accept": "text/event-stream"}, timeout=10)
453
+ response.raise_for_status() # Important: raise HTTP errors
454
+ client = SSEClient(response)
455
+ for event in client.events():
456
+ if event.event == 'metric':
457
+ yield f"event: {event.event}\\ndata: {event.data}\\n\\n"
458
+ except requests.exceptions.RequestException as e:
459
+ print(f"Request Exception: {e}")
460
+ yield f"event: error\ndata: Connection error: {e}\\n\\n" # Include error details
461
+ except Exception as e:
462
+ print(f"An error occurred: {e}")
463
+ yield f"event: error\ndata: An error occurred: {e}\\n\\n" # Include error details
464
+ finally:
465
+ session.close() # Close the session
466
 
467
  return Response(generate(), mimetype='text/event-stream')
468