Spaces:
Sleeping
Sleeping
Update server.py
Browse files
server.py
CHANGED
@@ -46,6 +46,7 @@ async def handle_sse(request: Request):
|
|
46 |
placeholder_id = f"placeholder_{id(write_stream)}"
|
47 |
if placeholder_id in write_streams:
|
48 |
write_streams[session_id] = write_streams.pop(placeholder_id)
|
|
|
49 |
await sse_stream_writer.send({"event": "message", "data": message_data})
|
50 |
|
51 |
sse_stream_writer, sse_stream_reader = anyio.create_memory_object_stream(0)
|
@@ -67,7 +68,19 @@ async def handle_post(request: Request):
|
|
67 |
body = await request.body()
|
68 |
message = json.loads(body.decode())
|
69 |
session_id = request.query_params.get("session_id")
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
if message.get("method") == "tools/list" and write_stream:
|
72 |
response = {
|
73 |
"jsonrpc": "2.0",
|
@@ -82,10 +95,13 @@ async def handle_post(request: Request):
|
|
82 |
}
|
83 |
response_data = json.dumps(response)
|
84 |
await write_stream.send({"event": "message", "data": response_data})
|
|
|
85 |
return Response(status_code=202)
|
|
|
86 |
if not write_stream:
|
87 |
logger.error(f"No write_stream found for session_id: {session_id}")
|
88 |
return Response(status_code=202)
|
|
|
89 |
await transport.handle_post_message(request.scope, request.receive, request._send)
|
90 |
return Response(status_code=202)
|
91 |
except Exception as e:
|
|
|
46 |
placeholder_id = f"placeholder_{id(write_stream)}"
|
47 |
if placeholder_id in write_streams:
|
48 |
write_streams[session_id] = write_streams.pop(placeholder_id)
|
49 |
+
logger.info(f"Updated placeholder {placeholder_id} to session_id {session_id}")
|
50 |
await sse_stream_writer.send({"event": "message", "data": message_data})
|
51 |
|
52 |
sse_stream_writer, sse_stream_reader = anyio.create_memory_object_stream(0)
|
|
|
68 |
body = await request.body()
|
69 |
message = json.loads(body.decode())
|
70 |
session_id = request.query_params.get("session_id")
|
71 |
+
logger.info(f"Received POST with session_id: {session_id}, message: {message}")
|
72 |
+
|
73 |
+
# Try to find the write_stream, including checking for placeholder IDs
|
74 |
+
write_stream = write_streams.get(session_id)
|
75 |
+
if not write_stream:
|
76 |
+
for sid, ws in list(write_streams.items()):
|
77 |
+
if sid.startswith("placeholder_"):
|
78 |
+
write_streams[session_id] = ws
|
79 |
+
write_streams.pop(sid)
|
80 |
+
write_stream = ws
|
81 |
+
logger.info(f"Associated placeholder {sid} with session_id {session_id}")
|
82 |
+
break
|
83 |
+
|
84 |
if message.get("method") == "tools/list" and write_stream:
|
85 |
response = {
|
86 |
"jsonrpc": "2.0",
|
|
|
95 |
}
|
96 |
response_data = json.dumps(response)
|
97 |
await write_stream.send({"event": "message", "data": response_data})
|
98 |
+
logger.info(f"Sent tools/list response for session {session_id}")
|
99 |
return Response(status_code=202)
|
100 |
+
|
101 |
if not write_stream:
|
102 |
logger.error(f"No write_stream found for session_id: {session_id}")
|
103 |
return Response(status_code=202)
|
104 |
+
|
105 |
await transport.handle_post_message(request.scope, request.receive, request._send)
|
106 |
return Response(status_code=202)
|
107 |
except Exception as e:
|