services.py 976 B

123456789101112131415161718192021222324252627
  1. from core_domain import CodeExecutionRequestContract, CodeExecutionResponseContract
  2. from app.bootstrap.settings import CodeRunnerServiceSettings
  3. from app.infrastructure.runner import PythonCodeRunner
  4. class CodeRunnerApplicationService:
  5. def __init__(
  6. self,
  7. *,
  8. runner: PythonCodeRunner,
  9. settings: CodeRunnerServiceSettings) -> None:
  10. self.runner = runner
  11. self.settings = settings
  12. def execute_code(self, payload: CodeExecutionRequestContract) -> CodeExecutionResponseContract:
  13. if payload.language != "python":
  14. return CodeExecutionResponseContract(
  15. success=False,
  16. error_message=f"unsupported language: {payload.language}")
  17. resolved_payload = payload.model_copy(
  18. update={
  19. "timeout_seconds": min(payload.timeout_seconds, self.settings.max_timeout_seconds),
  20. }
  21. )
  22. return self.runner.execute(resolved_payload)