Client library for the Sandai Operator SDK
Project description
Sandai Operator Client
Lightweight Python client for submitting tasks to a Sandai operator over Celery.
Installation
pip install sandai-operator-client
For local development:
pip install -e ".[dev]"
Quick Start
from sandai.operator_client import create_client
client = create_client("video-clipper", "v1")
artifacts, results = client.sync(
input_artifacts=[{"uri": "file:///tmp/input.mp4", "slot": "video"}],
options={"clip_duration": 10},
)
Core API
create_client(operator_name, operator_version, **kwargs)constructs anOperatorClient.async_call(...)submits a task and returns a CeleryAsyncResult.sync(...)submits a task and waits for(artifacts, results).descfetches the operator description payload, validates its status, and caches it per client instance.batch_async(...)preserves the legacy best-effort behavior and returnsAsyncResult | Noneper task.batch_sync(...)preserves the legacy best-effort behavior and returns legacy tuples per task.batch_submit(...)returns structured submission objects with explicit send errors.batch_collect(...)resolves structured submission objects into per-task structured results.batch_sync_detailed(...)returns structured per-task execution results directly.probe()performs a stronger transport/protocol health probe.ping()is a compatibility helper that only confirms the submit path is reachable.get_queue_info()returns the queue names used for each priority.
Task Controls
The client supports the same task-control fields used by the operator runtime:
timeout: converted into an absolutedeadlinebefore sending the task.cancel_key: propagated to the operator so tasks can be skipped before compute starts.persistent_output: stored undermeta["persistent-output"]for runtimes that preserve uploaded outputs.
Batch APIs
The package now exposes two batch styles:
- Legacy compatibility APIs:
batch_async(...)andbatch_sync(...)keep the previous best-effort semantics. - Structured APIs:
batch_submit(...),batch_collect(...), andbatch_sync_detailed(...)expose explicit per-task submission/execution status instead of collapsing failures into empty results.
Prefer the structured APIs for new integrations.
Health Checks
ping() and probe() are intentionally different:
ping()returnsTruewhen task submission succeeds.probe()returns a structuredHealthCheckResultwithsubmit_ok,retrieval_ok,response_ok, and optional error details.
Use probe() when you need a meaningful health signal.
Priority Model
Supported priorities are:
highnormallowvery_low
Queue names follow this pattern:
<priority>.<operator_name>.<operator_version>
Environment Variables
The client reads these settings when explicit connection arguments are not provided:
SANDAI_OPERATOR_CELERY_BROKER_URLSANDAI_OPERATOR_CELERY_RESULT_BACKENDSANDAI_OPERATOR_CELERY_TASK_SERIALIZERSANDAI_OPERATOR_CELERY_RESULT_SERIALIZERSANDAI_OPERATOR_AUTO_FORGET_RESULT
If broker/backend are not configured, the client falls back to local Redis defaults:
redis://localhost:6379/0
Error Model
sync() and desc normalize failures into typed exceptions where possible:
TaskTimeoutErrorTaskExecutionErrorTaskDeadlineExceededErrorTaskCancelledErrorInvalidTaskStatusErrorInvalidResultFormatErrorInvalidPriorityError
Structured batch APIs surface task errors directly on each result object instead of converting them into empty legacy tuples.
Testing
Run the client regression suite from the repository root:
python operator-client/tests/run_all_tests.py
The suite is mock-based and does not require a live Celery or Redis deployment.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sandai_operator_client-0.3.0.tar.gz.
File metadata
- Download URL: sandai_operator_client-0.3.0.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12bb02fdf29a0ac0d7051ac3a232cd33cb4ce79a708083cd19ab8010f0069bda
|
|
| MD5 |
2a89b32968cc27df18e065d94b7dae66
|
|
| BLAKE2b-256 |
e001e17fb83eba4cd77d83b4ef61c4f1024bb90292852eb354a9e61a095f69e2
|
File details
Details for the file sandai_operator_client-0.3.0-py3-none-any.whl.
File metadata
- Download URL: sandai_operator_client-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1b40327fa4a3896bf5698a181c87595480294b677e35c106596d0661d0992a1
|
|
| MD5 |
ea7657229db8fd0d4a7a679c749b431e
|
|
| BLAKE2b-256 |
a6f4a15e8f91524fe2bf65d2c75bbb59247c1e4011690df4e232a05ce54c30fa
|