Skip to main content

apache-airflow-providers-slate

Apache Airflow provider for Slate — move datasets and model weights between object stores from your Airflow DAGs at 984 MB/s, 4.4× faster than aws s3 cp.

Install

pip install apache-airflow-providers-slate

Setup

Add a connection in the Airflow UI (or via env var):

Connection ID:   slate_default
Connection Type: HTTP
Host:            http://your-slate-api-host
Port:            3030

Or via environment variable:

AIRFLOW_CONN_SLATE_DEFAULT='{"conn_type": "http", "host": "http://localhost", "port": 3030}'

Make sure slate-api is running:

DATABASE_URL=sqlite:slate.db?mode=rwc slate-api

Usage

from airflow import DAG
from airflow.utils.dates import days_ago
from apache_airflow_providers_slate.operators.slate import SlateTransferOperator

with DAG(
    dag_id="ml_data_pipeline",
    schedule="@daily",
    start_date=days_ago(1),
    catchup=False,
) as dag:

    # Ingest raw dataset from S3 to GCS staging
    ingest = SlateTransferOperator(
        task_id="ingest_dataset",
        src="s3://raw-data/datasets/imagenet/",
        dst="gs://ml-staging/datasets/imagenet/",
    )

    # Copy model weights to GPU node — runs after ingest
    copy_weights = SlateTransferOperator(
        task_id="copy_weights_to_gpu",
        src="gs://ml-staging/weights/llama-3-70b/",
        dst="/mnt/nvme/weights/llama-3-70b/",
        priority=10,          # pick up before lower-priority jobs
        max_attempts=5,       # retry up to 5 times
        poll_interval=10.0,
    )

    ingest >> copy_weights

The operator returns job metadata via XCom so downstream tasks can reference it:

def use_result(**context):
    result = context["ti"].xcom_pull(task_ids="ingest_dataset")
    print(f"Transferred {result['bytes_transferred']} bytes")
    print(f"Peak speed: {result['peak_throughput_mbps']:.1f} MB/s")

Supported stores

URL scheme Provider
s3://bucket/prefix AWS S3, MinIO, Cloudflare R2
gs://bucket/prefix Google Cloud Storage
az://container/prefix Azure Blob Storage
/path or file:///path Local filesystem

Any combination of source and destination works.

Operator reference

SlateTransferOperator(
    task_id="...",
    src="s3://...",             # required
    dst="gs://...",             # required
    slate_conn_id="slate_default",  # Airflow connection ID
    priority=0,                 # higher = picked up sooner
    max_attempts=3,             # retries with exponential backoff
    poll_interval=5.0,          # seconds between status polls
    transfer_timeout=None,      # raise after N seconds (None = no limit)
)

Metadata

Release files for apache-airflow-providers-slate 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apache-airflow-providers-slate 0.2.0
File Size Uploaded
apache_airflow_providers_slate-0.2.0.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apache-airflow-providers-slate 0.2.0
File Interpreter ABI Platform
apache_airflow_providers_slate-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.8 kB

Release files / apache_airflow_providers_slate-0.2.0.tar.gz

Download URL apache_airflow_providers_slate-0.2.0.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9f4a7f494ce7343cd3244916663b1f68021a006cbc4096415780b042aeeccd73
BLAKE2b-256 checksum
How to use checksums
7032644204c4d41845fe53d5b765566070541b203d4a35f9b6a6d3241d75e530
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / apache_airflow_providers_slate-0.2.0-py3-none-any.whl

Download URL apache_airflow_providers_slate-0.2.0-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d290e87da925efd4f2d6c133b2c09a5e91a924ffc7c10e0d76abd85a66fcbf5c
BLAKE2b-256 checksum
How to use checksums
3fca151219017599a73a542bec38ef2a82d374ed1bb6741f022e67b46aa547cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page