| 12345678910111213141516171819202122232425262728 |
- import httpx
- from core_domain import CodeExecutionRequestContract, CodeExecutionResponseContract
- class CodeRunnerClientError(Exception):
- pass
- class CodeRunnerClient:
- def __init__(self, base_url: str, timeout_seconds: float = 60.0) -> None:
- self.base_url = base_url.rstrip("/")
- self.timeout_seconds = timeout_seconds
- def execute_code(
- self,
- payload: CodeExecutionRequestContract,
- ) -> CodeExecutionResponseContract:
- try:
- with httpx.Client(timeout=self.timeout_seconds) as client:
- response = client.post(
- f"{self.base_url}/code/execute",
- json=payload.model_dump(mode="json"),
- )
- response.raise_for_status()
- return CodeExecutionResponseContract.model_validate(response.json())
- except httpx.HTTPError as exc:
- raise CodeRunnerClientError(f"code-runner-service request failed: {exc}") from exc
|