Update app.py
Browse files
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 |
-
|
| 451 |
-
|
| 452 |
-
|
| 453 |
-
|
| 454 |
-
|
| 455 |
-
|
| 456 |
-
|
| 457 |
-
|
| 458 |
-
|
| 459 |
-
|
| 460 |
-
|
| 461 |
-
|
| 462 |
-
|
| 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 |
|