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()
|
self.end_headers()
|
||||||
else:
|
else:
|
||||||
self._akis_basligi(resp, resp.status)
|
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):
|
def w(b):
|
||||||
if b:
|
if b:
|
||||||
@@ -930,9 +930,8 @@ class H(http.server.BaseHTTPRequestHandler):
|
|||||||
try:
|
try:
|
||||||
yeni = ac(ad)
|
yeni = ac(ad)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
govde = e.read().decode("utf-8", "replace") if hasattr(e, "read") else ""
|
son_govde = e.read() if hasattr(e, "read") else b""
|
||||||
son_hata = f"{ad}: {e} {govde}".strip()
|
log(f"{tag} katman denetimi: {ad} acilamadi ({type(e).__name__}: {e} {son_govde[:200]!r})")
|
||||||
log(f"{tag} katman denetimi: {ad} acilamadi ({son_hata[:300]})")
|
|
||||||
if yeni is None:
|
if yeni is None:
|
||||||
break
|
break
|
||||||
resp, rewriter, tag = yeni
|
resp, rewriter, tag = yeni
|
||||||
@@ -940,11 +939,8 @@ class H(http.server.BaseHTTPRequestHandler):
|
|||||||
if not kalan:
|
if not kalan:
|
||||||
return self._stream(resp, resp.status, tag, rewriter, izle, basliksiz=True)
|
return self._stream(resp, resp.status, tag, rewriter, izle, basliksiz=True)
|
||||||
if gecmedi:
|
if gecmedi:
|
||||||
# Siradakine gecilen adimda onceki model bir sey soyleyemez: son katmanin kendi hatasi gider.
|
# Son katman ne dondurduyse o gider, hicbir sey eklenmez; dondurmediyse hicbir sey gitmez.
|
||||||
log(f"{tag} katman denetimi: son katman da acilamadi, onun hatasi veriliyor")
|
w(son_govde)
|
||||||
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")
|
|
||||||
else:
|
else:
|
||||||
for chunk in parcalar:
|
for chunk in parcalar:
|
||||||
if izle is not None:
|
if izle is not None:
|
||||||
|
|||||||
@@ -263,8 +263,18 @@ class Akis(unittest.TestCase):
|
|||||||
self.calistir(sse("Bunu yapamam."))
|
self.calistir(sse("Bunu yapamam."))
|
||||||
self.assertEqual(self.opened, ["Katman-2", "Katman-3", "Katman-4"])
|
self.assertEqual(self.opened, ["Katman-2", "Katman-3", "Katman-4"])
|
||||||
self.assertNotIn(b"yapamam", self.h.wfile.getvalue())
|
self.assertNotIn(b"yapamam", self.h.wfile.getvalue())
|
||||||
self.assertIn(b"response.failed", self.sent())
|
self.assertEqual(self.sent(), b"") # the last layer said nothing: nothing is added
|
||||||
self.assertIn(b"Katman-4: acilamadi", self.sent()) # the last layer's own error reaches the user
|
|
||||||
|
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):
|
def test_unreachable_jev_keeps_the_answer(self):
|
||||||
self.puanlar = [None]
|
self.puanlar = [None]
|
||||||
|
|||||||
Reference in new issue
Block a user