Compare commits
3 Commits
1ecc599f7f
...
1b9f62f82f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b9f62f82f | ||
|
|
a224644247 | ||
|
|
91e4bcf2c9 |
@@ -1493,6 +1493,7 @@ async function sendChat() {
|
||||
renderChatStatus("stopped");
|
||||
}
|
||||
} else {
|
||||
console.error("chat stream failed", err);
|
||||
removeAssistantMessage(assistantMessage);
|
||||
const error = (err && err.message) || "request failed";
|
||||
chatHistory.push({ role: "error", content: error, model: selectedChatModel });
|
||||
|
||||
@@ -3457,6 +3457,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "text/event-stream; charset=utf-8")
|
||||
self.send_header("Cache-Control", "no-cache")
|
||||
self.send_header("X-Accel-Buffering", "no")
|
||||
self.end_headers()
|
||||
stream_usage: dict | None = None
|
||||
observed_stream_tokens = 0
|
||||
@@ -3499,7 +3500,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
if usage is not None:
|
||||
stream_usage = usage
|
||||
except (BrokenPipeError, ConnectionResetError):
|
||||
pass
|
||||
client_gone = True
|
||||
if self._finalize_proxy_cancel(
|
||||
proxy_ctx=proxy_ctx,
|
||||
server=server,
|
||||
@@ -3537,6 +3538,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
route_model=route_model,
|
||||
status=200,
|
||||
stream=True,
|
||||
client_disconnected=client_gone,
|
||||
tokens=tokens,
|
||||
elapsed_seconds=round(elapsed, 4),
|
||||
tokens_per_sec=round(tokens / elapsed, 4) if elapsed > 0 else 0.0,
|
||||
@@ -3738,6 +3740,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
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("Cache-Control", "no-cache")
|
||||
self.send_header("X-Accel-Buffering", "no")
|
||||
self.end_headers()
|
||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||
stream_usage: dict | None = None
|
||||
@@ -3811,6 +3814,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
route_model=route_model,
|
||||
status=200,
|
||||
stream=True,
|
||||
client_disconnected=client_gone,
|
||||
relay=True,
|
||||
tokens=tokens,
|
||||
elapsed_seconds=round(elapsed, 4),
|
||||
|
||||
@@ -49,6 +49,7 @@ def test_dashboard_chat_uses_streaming_fetch():
|
||||
assert "stream: true" in html
|
||||
assert ".body.getReader()" in html
|
||||
assert '=== "[DONE]"' in html
|
||||
assert 'console.error("chat stream failed", err)' in html
|
||||
|
||||
|
||||
def test_dashboard_served_by_follower():
|
||||
|
||||
@@ -467,6 +467,7 @@ def test_tracker_logs_stream_progress_before_request_completes():
|
||||
method="POST",
|
||||
)
|
||||
response = urllib.request.urlopen(req, timeout=3.0)
|
||||
assert response.headers["X-Accel-Buffering"] == "no"
|
||||
first_line = response.readline()
|
||||
assert first_line.startswith(b"data:")
|
||||
assert chunk_sent.wait(timeout=1.0)
|
||||
|
||||
Reference in New Issue
Block a user