Add httplib2 15s timeout + cache_discovery=False to prevent hangs
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
"""Direct Google Calendar and Gmail tools using google-api-python-client."""
|
||||
import json
|
||||
import boto3
|
||||
import httplib2
|
||||
from strands import tool
|
||||
from google.oauth2.credentials import Credentials
|
||||
from google.auth.transport.requests import Request
|
||||
from googleapiclient.discovery import build
|
||||
from datetime import datetime, timezone, timedelta
|
||||
|
||||
# Set a 15-second timeout on httplib2 to prevent hangs
|
||||
_HTTP_TIMEOUT = 15
|
||||
|
||||
_sm = None
|
||||
|
||||
|
||||
@@ -55,7 +59,8 @@ def list_calendars() -> str:
|
||||
"""List all Google Calendars for the current user."""
|
||||
try:
|
||||
creds = _get_creds(_actor_id())
|
||||
svc = build('calendar', 'v3', credentials=creds)
|
||||
http = creds.authorize(httplib2.Http(timeout=_HTTP_TIMEOUT))
|
||||
svc = build('calendar', 'v3', http=http, credentials=creds, cache_discovery=False)
|
||||
result = svc.calendarList().list().execute()
|
||||
items = result.get('items', [])
|
||||
if not items:
|
||||
@@ -75,7 +80,8 @@ def get_calendar_events(calendar_id: str = 'primary', days_ahead: int = 7) -> st
|
||||
"""
|
||||
try:
|
||||
creds = _get_creds(_actor_id())
|
||||
svc = build('calendar', 'v3', credentials=creds)
|
||||
http = creds.authorize(httplib2.Http(timeout=_HTTP_TIMEOUT))
|
||||
svc = build('calendar', 'v3', http=http, credentials=creds, cache_discovery=False)
|
||||
now = datetime.now(timezone.utc)
|
||||
time_max = now + timedelta(days=days_ahead)
|
||||
result = svc.events().list(
|
||||
@@ -108,7 +114,8 @@ def list_gmail_messages(max_results: int = 10, query: str = 'in:inbox') -> str:
|
||||
"""
|
||||
try:
|
||||
creds = _get_creds(_actor_id())
|
||||
svc = build('gmail', 'v1', credentials=creds)
|
||||
http = creds.authorize(httplib2.Http(timeout=_HTTP_TIMEOUT))
|
||||
svc = build('gmail', 'v1', http=http, credentials=creds, cache_discovery=False)
|
||||
result = svc.users().messages().list(
|
||||
userId='me', q=query, maxResults=max_results
|
||||
).execute()
|
||||
@@ -139,7 +146,8 @@ def get_gmail_message(message_id: str) -> str:
|
||||
"""
|
||||
try:
|
||||
creds = _get_creds(_actor_id())
|
||||
svc = build('gmail', 'v1', credentials=creds)
|
||||
http = creds.authorize(httplib2.Http(timeout=_HTTP_TIMEOUT))
|
||||
svc = build('gmail', 'v1', http=http, credentials=creds, cache_discovery=False)
|
||||
msg = svc.users().messages().get(
|
||||
userId='me', id=message_id, format='full'
|
||||
).execute()
|
||||
|
||||
Reference in New Issue
Block a user