How It Works
The user submits a job, the server runs it in the background, and the result comes back on completion.Choose a Result Mode
Pick how the result is delivered once the job finishes.Quick Start
Start Server
Submit Job
Idempotency
Since PR #1673, the in-process store is safe to read concurrently with writes. You can safely share a single
InMemoryJobStore instance between the FastAPI app and background tasks that periodically read stats.Polling
SSE Streaming
Webhook Callback
Session Grouping
Cancel Job
List Jobs
Complete Example
CLI Usage
Best Practices
Use idempotency keys for retries
Use idempotency keys for retries
Pass
Idempotency-Key (HTTP) or idempotency_key= (recipe helper) so duplicate submits return the same job instead of duplicating work.Prefer webhooks for long jobs
Prefer webhooks for long jobs
For runs over a few minutes, set
webhook_url and let your service react to completion instead of holding an open poll loop.Start the jobs server before integration tests
Start the jobs server before integration tests
python -m uvicorn praisonai.jobs.server:create_app --port 8005 --factory — the in-process store is safe for concurrent reads after PR #1673.Related
Background Tasks
Run agent work in-process without a separate jobs server.
Async Jobs CLI
Submit, stream, and cancel jobs from the terminal.

