(Bug Fix + Better Observability) - BudgetResetJob: (#8562)

* use class ResetBudgetJob

* refactor reset budget job

* update reset_budget job

* refactor reset budget job

* fix LiteLLM_UserTable

* refactor reset budget job

* add telemetry for reset budget job

* dd - log service success/failure on DD

* add detailed reset budget reset info on DD

* initialize_scheduled_background_jobs

* refactor reset budget job

* trigger service failure hook when fails to reset a budget for team, key, user

* fix resetBudgetJob

* unit testing for ResetBudgetJob

* test_duration_in_seconds_basic

* testing for triggering service logging

* fix logs on test teams fail

* remove unused imports

* fix import duration in s

* duration_in_seconds
This commit is contained in:
Ishaan Jaff 2025-02-15 16:13:08 -08:00 committed by GitHub
parent a8717ea124
commit c8d31a209b
11 changed files with 1107 additions and 87 deletions

View file

@ -13,7 +13,7 @@ from typing import Tuple
def _extract_from_regex(duration: str) -> Tuple[int, str]:
match = re.match(r"(\d+)(mo|[smhd]?)", duration)
match = re.match(r"(\d+)(mo|[smhdw]?)", duration)
if not match:
raise ValueError("Invalid duration format")
@ -42,6 +42,7 @@ def duration_in_seconds(duration: str) -> int:
- "<number>m" - minutes
- "<number>h" - hours
- "<number>d" - days
- "<number>w" - weeks
- "<number>mo" - months
Returns time in seconds till when budget needs to be reset
@ -56,6 +57,8 @@ def duration_in_seconds(duration: str) -> int:
return value * 3600
elif unit == "d":
return value * 86400
elif unit == "w":
return value * 604800
elif unit == "mo":
now = time.time()
current_time = datetime.fromtimestamp(now)