|
|
import os |
|
|
from typing import Optional |
|
|
|
|
|
from injector import Module, provider |
|
|
|
|
|
from taskweaver.ces import code_execution_service_factory |
|
|
from taskweaver.ces.common import Manager |
|
|
from taskweaver.config.module_config import ModuleConfig |
|
|
|
|
|
|
|
|
class ExecutionServiceConfig(ModuleConfig): |
|
|
def _configure(self) -> None: |
|
|
self._set_name("execution_service") |
|
|
self.env_dir = self._get_path( |
|
|
"env_dir", |
|
|
os.path.join(self.src.app_base_path, "env"), |
|
|
) |
|
|
|
|
|
|
|
|
class ExecutionServiceModule(Module): |
|
|
def __init__(self) -> None: |
|
|
self.manager: Optional[Manager] = None |
|
|
|
|
|
@provider |
|
|
def provide_executor_manager(self, config: ExecutionServiceConfig) -> Manager: |
|
|
if self.manager is None: |
|
|
self.manager = code_execution_service_factory( |
|
|
config.env_dir, |
|
|
) |
|
|
return self.manager |
|
|
|