connections
This commit is contained in:
@@ -1316,6 +1316,7 @@ async function sendChat() {
|
|||||||
persistActiveChatSession();
|
persistActiveChatSession();
|
||||||
renderChatStatus("done");
|
renderChatStatus("done");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.error("chat stream failed", err);
|
||||||
assistantMessage.role = "error";
|
assistantMessage.role = "error";
|
||||||
assistantMessage.content = err && err.message ? err.message : "request failed";
|
assistantMessage.content = err && err.message ? err.message : "request failed";
|
||||||
renderChatHistory();
|
renderChatHistory();
|
||||||
|
|||||||
@@ -3312,6 +3312,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header("Content-Type", "text/event-stream; charset=utf-8")
|
self.send_header("Content-Type", "text/event-stream; charset=utf-8")
|
||||||
self.send_header("Cache-Control", "no-cache")
|
self.send_header("Cache-Control", "no-cache")
|
||||||
|
self.send_header("X-Accel-Buffering", "no")
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
stream_usage: dict | None = None
|
stream_usage: dict | None = None
|
||||||
observed_stream_tokens = 0
|
observed_stream_tokens = 0
|
||||||
@@ -3354,7 +3355,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
if usage is not None:
|
if usage is not None:
|
||||||
stream_usage = usage
|
stream_usage = usage
|
||||||
except (BrokenPipeError, ConnectionResetError):
|
except (BrokenPipeError, ConnectionResetError):
|
||||||
pass
|
client_gone = True
|
||||||
if self._finalize_proxy_cancel(
|
if self._finalize_proxy_cancel(
|
||||||
proxy_ctx=proxy_ctx,
|
proxy_ctx=proxy_ctx,
|
||||||
server=server,
|
server=server,
|
||||||
@@ -3392,6 +3393,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
route_model=route_model,
|
route_model=route_model,
|
||||||
status=200,
|
status=200,
|
||||||
stream=True,
|
stream=True,
|
||||||
|
client_disconnected=client_gone,
|
||||||
tokens=tokens,
|
tokens=tokens,
|
||||||
elapsed_seconds=round(elapsed, 4),
|
elapsed_seconds=round(elapsed, 4),
|
||||||
tokens_per_sec=round(tokens / elapsed, 4) if elapsed > 0 else 0.0,
|
tokens_per_sec=round(tokens / elapsed, 4) if elapsed > 0 else 0.0,
|
||||||
@@ -3584,6 +3586,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
self.send_response(int(first.get("status", 200)))
|
self.send_response(int(first.get("status", 200)))
|
||||||
self.send_header("Content-Type", headers.get("Content-Type", "text/event-stream; charset=utf-8"))
|
self.send_header("Content-Type", headers.get("Content-Type", "text/event-stream; charset=utf-8"))
|
||||||
self.send_header("Cache-Control", "no-cache")
|
self.send_header("Cache-Control", "no-cache")
|
||||||
|
self.send_header("X-Accel-Buffering", "no")
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||||
stream_usage: dict | None = None
|
stream_usage: dict | None = None
|
||||||
@@ -3657,6 +3660,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
route_model=route_model,
|
route_model=route_model,
|
||||||
status=200,
|
status=200,
|
||||||
stream=True,
|
stream=True,
|
||||||
|
client_disconnected=client_gone,
|
||||||
relay=True,
|
relay=True,
|
||||||
tokens=tokens,
|
tokens=tokens,
|
||||||
elapsed_seconds=round(elapsed, 4),
|
elapsed_seconds=round(elapsed, 4),
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ def test_dashboard_chat_uses_streaming_fetch():
|
|||||||
assert "stream: true" in html
|
assert "stream: true" in html
|
||||||
assert ".body.getReader()" in html
|
assert ".body.getReader()" in html
|
||||||
assert 'data === "[DONE]"' in html
|
assert 'data === "[DONE]"' in html
|
||||||
|
assert 'console.error("chat stream failed", err)' in html
|
||||||
|
|
||||||
|
|
||||||
def test_dashboard_served_by_follower():
|
def test_dashboard_served_by_follower():
|
||||||
|
|||||||
@@ -467,6 +467,7 @@ def test_tracker_logs_stream_progress_before_request_completes():
|
|||||||
method="POST",
|
method="POST",
|
||||||
)
|
)
|
||||||
response = urllib.request.urlopen(req, timeout=3.0)
|
response = urllib.request.urlopen(req, timeout=3.0)
|
||||||
|
assert response.headers["X-Accel-Buffering"] == "no"
|
||||||
first_line = response.readline()
|
first_line = response.readline()
|
||||||
assert first_line.startswith(b"data:")
|
assert first_line.startswith(b"data:")
|
||||||
assert chunk_sent.wait(timeout=1.0)
|
assert chunk_sent.wait(timeout=1.0)
|
||||||
|
|||||||
Reference in New Issue
Block a user