Skip to content

Commit 8ace867

Browse files
committed
use decorator to logging
Signed-off-by: mozillazg <[email protected]>
1 parent 8988956 commit 8ace867

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

python/packages/kagent-adk/src/kagent/adk/_session_service.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import functools
12
import logging
23
from typing import Any, Optional
34

@@ -14,6 +15,17 @@
1415
logger = logging.getLogger("kagent." + __name__)
1516

1617

18+
def logging_http_exception(func):
19+
@functools.wraps(func)
20+
def wrapper(*args, **kwargs):
21+
try:
22+
return func(*args, **kwargs)
23+
except httpx.HTTPError as exc:
24+
logger.error(f"got http exception when {exc.request.method} {exc.request.url}: {exc}")
25+
raise
26+
return wrapper
27+
28+
1729
class KAgentSessionService(BaseSessionService):
1830
"""A session service implementation that uses the Kagent API.
1931
This service integrates with the Kagent server to manage session state
@@ -25,6 +37,7 @@ def __init__(self, client: httpx.AsyncClient):
2537
self.client = client
2638

2739
@override
40+
@logging_http_exception
2841
async def create_session(
2942
self,
3043
*,
@@ -49,11 +62,7 @@ async def create_session(
4962
json=request_data,
5063
headers={"X-User-ID": user_id},
5164
)
52-
try:
53-
response.raise_for_status()
54-
except httpx.HTTPStatusError:
55-
logger.error(f"Failed to create session: {response.text}")
56-
raise
65+
response.raise_for_status()
5766

5867
data = response.json()
5968
if not data.get("data"):
@@ -65,6 +74,7 @@ async def create_session(
6574
return Session(id=session_data["id"], user_id=session_data["user_id"], state=state or {}, app_name=app_name)
6675

6776
@override
77+
@logging_http_exception
6878
async def get_session(
6979
self,
7080
*,
@@ -127,18 +137,14 @@ async def get_session(
127137
except httpx.HTTPStatusError as e:
128138
if e.response.status_code == 404:
129139
return None
130-
logger.error(f"Failed to get session: {response.text}")
131140
raise
132141

133142
@override
143+
@logging_http_exception
134144
async def list_sessions(self, *, app_name: str, user_id: str) -> ListSessionsResponse:
135145
# Make API call to list sessions
136146
response = await self.client.get(f"/api/sessions?user_id={user_id}", headers={"X-User-ID": user_id})
137-
try:
138-
response.raise_for_status()
139-
except httpx.HTTPStatusError:
140-
logger.error(f"Failed to list sessions: {response.text}")
141-
raise
147+
response.raise_for_status()
142148

143149
data = response.json()
144150
sessions_data = data.get("data", [])
@@ -155,19 +161,17 @@ def list_sessions_sync(self, *, app_name: str, user_id: str) -> ListSessionsResp
155161
raise NotImplementedError("not supported. use async")
156162

157163
@override
164+
@logging_http_exception
158165
async def delete_session(self, *, app_name: str, user_id: str, session_id: str) -> None:
159166
# Make API call to delete session
160167
response = await self.client.delete(
161168
f"/api/sessions/{session_id}?user_id={user_id}",
162169
headers={"X-User-ID": user_id},
163170
)
164-
try:
165-
response.raise_for_status()
166-
except httpx.HTTPStatusError:
167-
logger.error(f"Failed to delete session: {response.text}")
168-
raise
171+
response.raise_for_status()
169172

170173
@override
174+
@logging_http_exception
171175
async def append_event(self, session: Session, event: Event) -> Event:
172176
# Convert ADK Event to JSON format
173177
event_data = {
@@ -181,11 +185,7 @@ async def append_event(self, session: Session, event: Event) -> Event:
181185
json=event_data,
182186
headers={"X-User-ID": session.user_id},
183187
)
184-
try:
185-
response.raise_for_status()
186-
except httpx.HTTPStatusError:
187-
logger.error(f"Failed to append event: {response.text}")
188-
raise
188+
response.raise_for_status()
189189

190190
# TODO: potentially pull and update the session from the server
191191
# Update the in-memory session.

0 commit comments

Comments
 (0)