airflow.providers.singularity.operators.singularity

SingularityOperator

在 Singularity 容器内执行命令。

模块内容

class airflow.providers.singularity.operators.singularity.SingularityOperator(*, image, command, start_command=None, environment=None, pull_folder=None, working_dir=None, force_pull=False, volumes=None, options=None, auto_remove=False, **kwargs)[source]

基类: airflow.models.BaseOperator

在 Singularity 容器内执行命令。

与 Docker 相比,Singularity 与主机的连接更无缝,因此无需特殊绑定即可确保在用户 $HOME 和临时目录中绑定内容。如果用户需要自定义绑定,可以通过 –volumes 实现。

参数
  • image (str) – 用于创建容器的 Singularity 镜像或 URI。

  • auto_remove (bool | None) – 进程退出时删除容器。默认值为 False。

  • command (str | ast.AST) – 将在容器中运行的命令。(模板化)

  • start_command (str | list[str] | None) – 传递给容器实例的启动命令。

  • environment (dict[str, Any] | None) – 在容器中设置的环境变量。(模板化)

  • working_dir (str | None) – 为实例设置工作目录。

  • force_pull (bool | None) – 每次运行时都拉取镜像。默认值为 False。

  • volumes (list[str] | None) – 要挂载到容器中的卷列表,例如 ['/host/path:/container/path', '/host/path2:/container/path2']

  • options (list[str] | None) – 提供给实例启动的其他标志(列表)。

  • working_dir – 在容器上设置的工作目录(相当于 docker 客户端的 -w 开关)。

template_fields: collections.abc.Sequence[str] = ('command', 'environment')[source]
template_ext: collections.abc.Sequence[str] = ('.sh', '.bash')[source]
template_fields_renderers[source]
auto_remove = False[source]
command[source]
start_command = None[source]
environment[source]
force_pull = False[source]
image[source]
instance = None[source]
options = [][source]
pull_folder = None[source]
volumes = [][source]
working_dir = None[source]
cli = None[source]
container = None[source]
execute(context)[source]

创建操作符时派生此方法。

上下文是与渲染 jinja 模板时使用的字典相同。

有关更多上下文,请参考 get_template_context。

on_kill()[source]

重写此方法以在任务实例被终止时清理子进程。

在操作符内使用 threading、subprocess 或 multiprocessing 模块都需要进行清理,否则会留下孤儿进程(ghost processes)。

此条目有帮助吗?