Skip to main content

Docker 命令行代码执行器

Docker 命令行代码执行器

class DockerCommandLineCodeExecutor(CodeExecutor)

__init__

def __init__(image: str = "python:3-slim",
container_name: Optional[str] = None,
timeout: int = 60,
work_dir: Union[Path, str] = Path("."),
bind_dir: Optional[Union[Path, str]] = None,
auto_remove: bool = True,
stop_container: bool = True,
execution_policies: Optional[Dict[str, bool]] = None)

(实验性功能)一个通过 Docker 容器中的命令行环境执行代码的代码执行器类。

该执行器首先将每个代码块保存到工作目录中的一个文件中,然后在容器中执行该代码文件。 执行器按接收到的顺序执行代码块。 目前,执行器仅支持 Python 和 shell 脚本。 对于 Python 代码,请在代码块中使用语言 "python"。 对于 shell 脚本,请在代码块中使用语言 "bash"、"shell" 或 "sh"。

参数

  • image 类型,可选 - 用于代码执行的 Docker 镜像。默认为 "python:3-slim"。
  • container_name Optional[str],可选 - 创建的 Docker 容器的名称。如果为 None,则自动生成一个名称。默认为 None。
  • timeout int,可选 - 代码执行的超时时间。默认为 60。
  • work_dir Union[Path, str],可选 - 代码执行的工作目录。默认为 Path(".")。
  • bind_dir Union[Path, str],可选 - 将绑定到代码执行器容器的目录。适用于在容器内部生成容器的情况。默认为 work_dir。
  • auto_remove bool,可选 - 如果为 True,在停止容器时将自动删除 Docker 容器。默认为 True。
  • stop_container bool,可选 - 如果为 True,在调用 stop 时、上下文管理器退出时或 Python 进程以 atext 退出时,将自动停止容器。默认为 True。

抛出

  • ValueError - 参数错误,或容器启动失败。

timeout

@property
def timeout() -> int

(实验性功能)代码执行的超时时间。

work_dir

@property
def work_dir() -> Path

(实验性功能)代码执行的工作目录。

bind_dir

@property
def bind_dir() -> Path

(实验性功能)代码执行容器的绑定目录。

code_extractor

@property
def code_extractor() -> CodeExtractor

(实验性功能)导出一个可以被代理使用的代码提取器。

execute_code_blocks

def execute_code_blocks(code_blocks: List[CodeBlock]) -> CommandLineCodeResult

(实验性功能)执行代码块并返回结果。

参数

  • code_blocks List[CodeBlock] - 要执行的代码块。

返回

  • CommandlineCodeResult - 代码执行的结果。

restart

def restart() -> None

(实验性)重新启动代码执行器。

stop

def stop() -> None

(实验性)停止代码执行器。