fix(utils.py): log failure to sync failure callbacks as well

This commit is contained in:
Krrish Dholakia 2024-07-05 14:49:34 -07:00
parent b1b21b0340
commit fd11f63f71
2 changed files with 19 additions and 5 deletions

View file

@ -7,6 +7,7 @@ import os
import re import re
import smtplib import smtplib
import subprocess import subprocess
import threading
import time import time
import traceback import traceback
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -583,6 +584,7 @@ class ProxyLogging:
start_time=datetime.now(), start_time=datetime.now(),
**request_data, **request_data,
) )
# log the custom exception # log the custom exception
await litellm_logging_obj.async_failure_handler( await litellm_logging_obj.async_failure_handler(
exception=original_exception, exception=original_exception,
@ -591,6 +593,16 @@ class ProxyLogging:
end_time=time.time(), end_time=time.time(),
) )
threading.Thread(
target=litellm_logging_obj.failure_handler,
args=(
original_exception,
traceback.format_exc(),
time.time(),
time.time(),
),
).start()
for callback in litellm.callbacks: for callback in litellm.callbacks:
try: try:
_callback: Optional[CustomLogger] = None _callback: Optional[CustomLogger] = None

View file

@ -51,7 +51,8 @@ from litellm.router import Router
class testLogger(CustomLogger): class testLogger(CustomLogger):
def __init__(self): def __init__(self):
self.reaches_failure_event = False self.reaches_sync_failure_event = False
self.reaches_async_failure_event = False
async def async_pre_call_hook( async def async_pre_call_hook(
self, self,
@ -72,10 +73,10 @@ class testLogger(CustomLogger):
) )
async def async_log_failure_event(self, kwargs, response_obj, start_time, end_time): async def async_log_failure_event(self, kwargs, response_obj, start_time, end_time):
self.reaches_async_failure_event = True
def log_failure_event(self, kwargs, response_obj, start_time, end_time):
self.reaches_failure_event = True self.reaches_failure_event = True
return await super().async_log_failure_event(
kwargs, response_obj, start_time, end_time
)
router = Router( router = Router(
@ -184,4 +185,5 @@ async def test_chat_completion_request_with_redaction(route, body):
pass pass
await asyncio.sleep(3) await asyncio.sleep(3)
assert _test_logger.reaches_failure_event is True assert _test_logger.reaches_async_failure_event is True
assert _test_logger.reaches_sync_failure_event is True