airflow.providers.docker.operators.docker_swarm

執行臨時的 Docker Swarm 服務。

DockerSwarmOperator

將命令作為臨時的 docker swarm 服務執行。

模組內容

class airflow.providers.docker.operators.docker_swarm.DockerSwarmOperator(*, image, args=None, enable_logging=True, configs=None, secrets=None, mode=None, networks=None, placement=None, container_resources=None, service_prefix='airflow', logging_driver=None, logging_driver_opts=None, **kwargs)[source]

基類: airflow.providers.docker.operators.docker.DockerOperator

將命令作為臨時的 docker swarm 服務執行。

示例用例 - 使用 Docker Swarm 編排使一次性指令碼具有高可用性。

在主機上建立一個臨時目錄並將其掛載到容器中,以便儲存總大小超過容器預設磁碟大小 10GB 的檔案。可以透過環境變數 AIRFLOW_TMP_DIR 訪問掛載目錄的路徑。

如果在拉取映象之前需要登入私有登錄檔,則需要在 Airflow 中配置 Docker 連線,並透過引數 docker_conn_id 提供連線 ID。

引數:
  • image (str) – 用於建立容器的 Docker 映象。如果省略映象標籤,將使用“latest”。

  • api_version – 遠端 API 版本。設定為 auto 以自動檢測伺服器版本。

  • auto_remove

    服務終止時是否允許移除服務。可能的值

    • never: (預設) 不移除服務

    • success: 成功時移除

    • force: 始終移除服務

  • command – 在容器中執行的命令。(模版化)

  • args (str | list[str] | None) – 命令的引數。

  • docker_url – 執行 docker daemon 的主機的 URL。預設值為 DOCKER_HOST 環境變數的值,如果未設定則為 unix://var/run/docker.sock。

  • environment – 在容器中設定的環境變數。(模版化)

  • force_pull – 每次執行時都拉取 docker 映象。預設為 False。

  • mem_limit – 容器可以使用的最大記憶體量。可以是浮點值(表示位元組限制),或像 128m1g 這樣的字串。

  • tls_ca_cert – PEM 編碼的證書頒發機構檔案路徑,用於保護 docker 連線。

  • tls_client_cert – PEM 編碼的證書檔案路徑,用於驗證 docker 客戶端身份。

  • tls_client_key – PEM 編碼的金鑰檔案路徑,用於驗證 docker 客戶端身份。

  • tls_hostname – 用於匹配 docker 伺服器證書的主機名,或設定為 False 以停用檢查。

  • tls_ssl_version – 與 docker daemon 通訊時使用的 SSL 版本。

  • tmp_dir – 容器內用於掛載運算子在主機上建立的臨時目錄的掛載點。該路徑也透過環境變數 AIRFLOW_TMP_DIR 在容器內部可用。

  • user – docker 容器內的預設使用者。

  • docker_conn_id – Docker 連線 ID

  • tty – 為此服務的容器分配偽 TTY。需要設定此項才能檢視 Docker 容器/服務的日誌。

  • enable_logging (bool) – 在運算子日誌中顯示應用程式日誌。僅當 Docker 引擎使用 json-file 或 journald 日誌驅動時支援。使用 Python 應用程式時,應設定 tty 引數。

  • retrieve_output – 此 docker 映象是否應在手動關閉映象之前持續嘗試從輸出檔案拉取並輸出內容。對於使用者希望獲取未釋出到日誌中的 pickle 序列化輸出的情況很有用。

  • retrieve_output_path – 將被檢索並傳遞給 xcom 的輸出檔案路徑

  • configs (list[docker.types.ConfigReference] | None) – 將暴露給 swarm 服務容器的 docker 配置列表。這些配置是 docker api 中定義的 ConfigReference 物件 [https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_

  • secrets (list[docker.types.SecretReference] | None) – 將暴露給 swarm 服務容器的 docker secrets 列表。這些 secrets 是 docker create_service api 中定義的 SecretReference 物件。[https://docker-py.readthedocs.io/en/stable/services.html#docker.models.services.ServiceCollection.create]_

  • mode (docker.types.ServiceMode | None) – 指示服務應部署為副本服務 (replicated) 還是全域性服務 (global),以及相關引數

  • networks (list[str | docker.types.NetworkAttachmentConfig] | None) – 用於將服務連線到的網路名稱、ID 或 NetworkAttachmentConfig 列表。

  • placement (docker.types.Placement | list[docker.types.Placement] | None) – 排程器的放置說明。如果傳遞的是列表,則假定它是 Placement 物件中的約束列表。

  • container_resources (docker.types.Resources | None) – 啟動的容器的資源。這些資源是 docker api 中定義的 Resources 物件 [https://docker-py.readthedocs.io/en/stable/api.html#docker.types.Resources]_ 此引數優先於 mem_limit 引數。

  • service_prefix (str) – 服務名稱的字首。服務名稱將生成為 {service_prefix}-{random_string}。預設為 ‘airflow’。

  • logging_driver (Literal['json-path', 'gelf'] | None) – 用於容器日誌的日誌驅動。Docker 預設使用 ‘json-file’。有關 Docker 日誌驅動的更多資訊:https://dockerdocs.tw/engine/logging/configure/ 注意:目前僅支援 ‘json-file’ 和 ‘gelf’ 驅動。如果留空,將使用 ‘json-file’。

  • logging_driver_opts (dict | None) – 與所選日誌驅動一起使用的日誌選項字典。根據日誌驅動的不同,有些選項是必需的。如果未包含這些選項,運算子將失敗。所有選項值必須是字串並用雙引號括起來。有關 ‘json-file’ 選項的資訊:https://dockerdocs.tw/engine/logging/drivers/json-file/ 有關 ‘gelf’ 選項的資訊:https://dockerdocs.tw/engine/logging/drivers/gelf/ 注意:‘gelf’ 驅動需要設定 ‘gelf-address’ 選項。

args = None[source]
enable_logging = True[source]
service = None[source]
tasks: list[dict] = [][source]
containers: list[dict] = [][source]
configs = None[source]
secrets = None[source]
mode = None[source]
networks = None[source]
placement = None[source]
container_resources[source]
service_prefix = 'airflow'[source]
logging_driver = None[source]
logging_driver_opts = None[source]
execute(context)[source]

建立運算子時派生。

上下文是與渲染 jinja 模版時使用的相同的字典。

有關更多上下文資訊,請參閱 get_template_context。

static format_args(args)[source]

獲取 args。

args 字串被解析為一個列表。

引數:

args (list[str] | str | None) – docker 服務的 args

返回:

以列表形式返回 args

返回型別:

list[str] | None

on_kill()[source]

覆蓋此方法可在任務例項被終止時清理子程序。

在運算子中使用 threading, subprocess 或 multiprocessing 模組都需要進行清理,否則會留下殭屍程序。

此條目有幫助嗎?