services.py 996 B

1234567891011121314151617181920212223242526272829
  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,
  10. ) -> None:
  11. self.runner = runner
  12. self.settings = settings
  13. def execute_code(self, payload: CodeExecutionRequestContract) -> CodeExecutionResponseContract:
  14. if payload.language != "python":
  15. return CodeExecutionResponseContract(
  16. success=False,
  17. error_message=f"unsupported language: {payload.language}",
  18. )
  19. resolved_payload = payload.model_copy(
  20. update={
  21. "timeout_seconds": min(payload.timeout_seconds, self.settings.max_timeout_seconds),
  22. }
  23. )
  24. return self.runner.execute(resolved_payload)