Ling / utils /remote_client.py
Nam Fam
update files
ea99abb
import os
import requests
from typing import Dict, Any
from dotenv import load_dotenv
load_dotenv()
# Timeout in seconds
TIMEOUT = int(os.getenv("REMOTE_SERVICE_TIMEOUT", "300"))
def execute_remote_task(task_name: str, payload: Dict[str, Any]) -> Dict[str, Any]:
"""
Execute a remote task using the configured remote service.
Args:
task_name: Name of the task to execute (e.g., 'summarization', 'translation')
payload: Dictionary containing task-specific parameters
Returns:
Dictionary containing the task result
Raises:
requests.RequestException: If there's an error with the remote request
"""
# Get the endpoint from environment variables
endpoint = os.getenv(f"REMOTE_ENDPOINT_{task_name.upper()}")
if not endpoint:
raise ValueError(f"No endpoint configured for task: {task_name}")
try:
response = requests.post(
url=endpoint,
json={"task": task_name, **payload},
timeout=TIMEOUT
)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
error_msg = f"Error calling remote service for {task_name}: {str(e)}"
if hasattr(e, 'response') and e.response is not None:
error_msg += f" - {e.response.text}"
return {"error": error_msg}