ExAtlas.Providers.RunPod.Jobs (ExAtlas v0.5.0)

Copy Markdown View Source

Serverless job operations against api.runpod.ai/v2/<endpoint>.

Supports /run (async), /runsync (sync, ~90s cap), /status/:id, /cancel/:id, and streaming via /stream/:id.

Summary

Functions

POST /<endpoint>/cancel/:job_id — cancel an in-flight job.

Async job submission — POST /<endpoint>/run.

Synchronous job submission — POST /<endpoint>/runsync.

GET /<endpoint>/status/:job_id — fetch job status.

Stream partial results — GET /<endpoint>/stream/:job_id.

Functions

cancel(ctx, endpoint_id, job_id)

POST /<endpoint>/cancel/:job_id — cancel an in-flight job.

run(ctx, endpoint_id, body)

Async job submission — POST /<endpoint>/run.

run_sync(ctx, endpoint_id, body, timeout_ms \\ 90000)

Synchronous job submission — POST /<endpoint>/runsync.

RunPod caps runsync at ~90 seconds server-side. We wrap in Task.async + Task.yield/shutdown to guarantee we never block a caller past timeout_ms.

status(ctx, endpoint_id, job_id)

GET /<endpoint>/status/:job_id — fetch job status.

stream(ctx, endpoint_id, job_id)

Stream partial results — GET /<endpoint>/stream/:job_id.

Returns a Stream that polls the stream endpoint with jittered backoff until the job reaches a terminal state.