Kopru: son katmanin dondurdugu oldugu gibi gider, sarmalayici yok
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
06039b904d
commit
8fbbe226db
2 files changed
+17
-11
No files matched your search
@@ -882,7 +882,7 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
self.end_headers()
|
||||
else:
|
||||
self._akis_basligi(resp, resp.status)
|
||||
kalan, son_yazi, son_hata = list(sira), time.time(), ""
|
||||
kalan, son_yazi, son_govde = list(sira), time.time(), b""
|
||||
|
||||
def w(b):
|
||||
if b:
|
||||
@@ -930,9 +930,8 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
try:
|
||||
yeni = ac(ad)
|
||||
except Exception as e:
|
||||
govde = e.read().decode("utf-8", "replace") if hasattr(e, "read") else ""
|
||||
son_hata = f"{ad}: {e} {govde}".strip()
|
||||
log(f"{tag} katman denetimi: {ad} acilamadi ({son_hata[:300]})")
|
||||
son_govde = e.read() if hasattr(e, "read") else b""
|
||||
log(f"{tag} katman denetimi: {ad} acilamadi ({type(e).__name__}: {e} {son_govde[:200]!r})")
|
||||
if yeni is None:
|
||||
break
|
||||
resp, rewriter, tag = yeni
|
||||
@@ -940,11 +939,8 @@ class H(http.server.BaseHTTPRequestHandler):
|
||||
if not kalan:
|
||||
return self._stream(resp, resp.status, tag, rewriter, izle, basliksiz=True)
|
||||
if gecmedi:
|
||||
# Siradakine gecilen adimda onceki model bir sey soyleyemez: son katmanin kendi hatasi gider.
|
||||
log(f"{tag} katman denetimi: son katman da acilamadi, onun hatasi veriliyor")
|
||||
olay = {"type": "response.failed", "response": {"id": "resp_astrabridge_katman", "object": "response",
|
||||
"status": "failed", "output": [], "error": {"code": "katman_hatasi", "message": son_hata}}}
|
||||
w(b"event: response.failed\ndata: " + json.dumps(olay, ensure_ascii=False).encode("utf-8") + b"\n\n")
|
||||
# Son katman ne dondurduyse o gider, hicbir sey eklenmez; dondurmediyse hicbir sey gitmez.
|
||||
w(son_govde)
|
||||
else:
|
||||
for chunk in parcalar:
|
||||
if izle is not None:
|
||||
|
||||
@@ -263,8 +263,18 @@ class Akis(unittest.TestCase):
|
||||
self.calistir(sse("Bunu yapamam."))
|
||||
self.assertEqual(self.opened, ["Katman-2", "Katman-3", "Katman-4"])
|
||||
self.assertNotIn(b"yapamam", self.h.wfile.getvalue())
|
||||
self.assertIn(b"response.failed", self.sent())
|
||||
self.assertIn(b"Katman-4: acilamadi", self.sent()) # the last layer's own error reaches the user
|
||||
self.assertEqual(self.sent(), b"") # the last layer said nothing: nothing is added
|
||||
|
||||
def test_the_last_layers_own_error_body_is_delivered_untouched(self):
|
||||
class Hata(Exception):
|
||||
def read(self):
|
||||
return b'{"error": {"message": "katman 4 hatasi"}}'
|
||||
self.puanlar = [{"ret": 0.9, "sart": 0.0}]
|
||||
|
||||
def ac(ad):
|
||||
raise Hata("HTTP 400")
|
||||
self.h._denetimli_akis(Yanit(sse("Bunu yapamam.")), "[1]", None, None, "yap", ["Katman-4"], ac)
|
||||
self.assertEqual(self.sent(), b'{"error": {"message": "katman 4 hatasi"}}')
|
||||
|
||||
def test_unreachable_jev_keeps_the_answer(self):
|
||||
self.puanlar = [None]
|
||||
|
||||
Reference in new issue
Block a user