From fd11f63f71db9e3dcb71b10e60623cd7c7f4879c Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Fri, 5 Jul 2024 14:49:34 -0700 Subject: [PATCH] fix(utils.py): log failure to sync failure callbacks as well --- litellm/proxy/utils.py | 12 ++++++++++++ litellm/tests/test_proxy_reject_logging.py | 12 +++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/litellm/proxy/utils.py b/litellm/proxy/utils.py index 0e0294bbe..4665bbce7 100644 --- a/litellm/proxy/utils.py +++ b/litellm/proxy/utils.py @@ -7,6 +7,7 @@ import os import re import smtplib import subprocess +import threading import time import traceback from datetime import datetime, timedelta @@ -583,6 +584,7 @@ class ProxyLogging: start_time=datetime.now(), **request_data, ) + # log the custom exception await litellm_logging_obj.async_failure_handler( exception=original_exception, @@ -591,6 +593,16 @@ class ProxyLogging: 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: try: _callback: Optional[CustomLogger] = None diff --git a/litellm/tests/test_proxy_reject_logging.py b/litellm/tests/test_proxy_reject_logging.py index f176b2f8c..b1796abee 100644 --- a/litellm/tests/test_proxy_reject_logging.py +++ b/litellm/tests/test_proxy_reject_logging.py @@ -51,7 +51,8 @@ from litellm.router import Router class testLogger(CustomLogger): 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( self, @@ -72,10 +73,10 @@ class testLogger(CustomLogger): ) 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 - return await super().async_log_failure_event( - kwargs, response_obj, start_time, end_time - ) router = Router( @@ -184,4 +185,5 @@ async def test_chat_completion_request_with_redaction(route, body): pass 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