mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 11:43:54 +00:00
(feat) add better debugging when DB read/write fails
This commit is contained in:
parent
01d3fdbb65
commit
79f5e36540
2 changed files with 44 additions and 19 deletions
|
@ -4,7 +4,9 @@ import uuid
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
|
||||||
litellm_client = AsyncOpenAI(base_url="http://0.0.0.0:8000", api_key="any")
|
litellm_client = AsyncOpenAI(
|
||||||
|
base_url="http://0.0.0.0:4000", api_key="sk-iNwH_oOtAQ6syi_2gkEOpQ"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def litellm_completion():
|
async def litellm_completion():
|
||||||
|
@ -27,7 +29,7 @@ async def litellm_completion():
|
||||||
async def main():
|
async def main():
|
||||||
for i in range(150):
|
for i in range(150):
|
||||||
start = time.time()
|
start = time.time()
|
||||||
n = 150 # Number of concurrent tasks
|
n = 2000 # Number of concurrent tasks
|
||||||
tasks = [litellm_completion() for _ in range(n)]
|
tasks = [litellm_completion() for _ in range(n)]
|
||||||
|
|
||||||
chat_completions = await asyncio.gather(*tasks)
|
chat_completions = await asyncio.gather(*tasks)
|
||||||
|
|
|
@ -373,7 +373,8 @@ class ProxyLogging:
|
||||||
error_message = original_exception.detail
|
error_message = original_exception.detail
|
||||||
else:
|
else:
|
||||||
error_message = str(original_exception)
|
error_message = str(original_exception)
|
||||||
error_message += traceback_str
|
if isinstance(traceback_str, str):
|
||||||
|
error_message += traceback_str[:1000]
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.alerting_handler(
|
self.alerting_handler(
|
||||||
message=f"DB read/write call failed: {error_message}",
|
message=f"DB read/write call failed: {error_message}",
|
||||||
|
@ -709,10 +710,12 @@ class PrismaClient:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
tracback_str = traceback.format_exc()
|
error_msg = f"LiteLLM Prisma Client Exception get_generic_data: {e}"
|
||||||
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(
|
self.proxy_logging_obj.failure_handler(
|
||||||
original_exception=e, traceback_str=tracback_str
|
original_exception=e, traceback_str=error_traceback
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
@ -974,15 +977,14 @@ class PrismaClient:
|
||||||
response.expires = response.expires.isoformat()
|
response.expires = response.expires.isoformat()
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print_verbose(f"LiteLLM Prisma Client Exception: {e}")
|
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
traceback.print_exc()
|
error_msg = f"LiteLLM Prisma Client Exception get_data: {e}"
|
||||||
# get tracback
|
print_verbose(error_msg)
|
||||||
traceback_string = traceback.format_exc()
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(
|
self.proxy_logging_obj.failure_handler(
|
||||||
original_exception=e, traceback_str=traceback_string
|
original_exception=e, traceback_str=error_traceback
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
@ -1103,13 +1105,15 @@ class PrismaClient:
|
||||||
return new_user_notification_row
|
return new_user_notification_row
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print_verbose(f"LiteLLM Prisma Client Exception: {e}")
|
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
traceback_str = traceback.format_exc()
|
error_msg = f"LiteLLM Prisma Client Exception in insert_data: {e}"
|
||||||
print_verbose(f"Traceback: {traceback_str}")
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(original_exception=e, traceback_str=traceback_str) # type: ignore # noqa=traceback_str)
|
self.proxy_logging_obj.failure_handler(
|
||||||
|
original_exception=e, traceback_str=error_traceback
|
||||||
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
@ -1294,12 +1298,14 @@ class PrismaClient:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
error_msg = f"LiteLLM Prisma Client Exception - update_data: {e}"
|
||||||
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(
|
self.proxy_logging_obj.failure_handler(
|
||||||
original_exception=e, traceback_str=traceback.format_exc()
|
original_exception=e, traceback_str=error_traceback
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
print_verbose("\033[91m" + f"DB write failed: {e}" + "\033[0m")
|
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
# Define a retrying strategy with exponential backoff
|
# Define a retrying strategy with exponential backoff
|
||||||
|
@ -1352,9 +1358,12 @@ class PrismaClient:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
error_msg = f"LiteLLM Prisma Client Exception - delete_data: {e}"
|
||||||
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(
|
self.proxy_logging_obj.failure_handler(
|
||||||
original_exception=e, traceback_str=traceback.format_exc()
|
original_exception=e, traceback_str=error_traceback
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
@ -1378,8 +1387,15 @@ class PrismaClient:
|
||||||
)
|
)
|
||||||
await self.db.connect()
|
await self.db.connect()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
error_msg = f"LiteLLM Prisma Client Exception connect(): {e}"
|
||||||
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(original_exception=e)
|
self.proxy_logging_obj.failure_handler(
|
||||||
|
original_exception=e, traceback_str=error_traceback
|
||||||
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
@ -1395,8 +1411,15 @@ class PrismaClient:
|
||||||
try:
|
try:
|
||||||
await self.db.disconnect()
|
await self.db.disconnect()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
error_msg = f"LiteLLM Prisma Client Exception disconnect(): {e}"
|
||||||
|
print_verbose(error_msg)
|
||||||
|
error_traceback = error_msg + "\n" + traceback.format_exc()
|
||||||
asyncio.create_task(
|
asyncio.create_task(
|
||||||
self.proxy_logging_obj.failure_handler(original_exception=e)
|
self.proxy_logging_obj.failure_handler(
|
||||||
|
original_exception=e, traceback_str=error_traceback
|
||||||
|
)
|
||||||
)
|
)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue