Skip to content

Filter 13: background_jobs #32

Description

@leseb

Purpose

Handle background response processing. Queue, workers, timeout, cancellation, polling.

Behavior

  • Queue: bounded channel (capacity 100)
  • Workers: 10 long-lived tokio tasks pulling from queue
  • Per-request timeout: 5 minutes
  • On enqueue:
    • Store response with status=queued in response store
    • Return immediately with queued response object
    • Worker picks up, runs full filter chain, updates store
    • Handle QueueFull → reject (ensure no orphaned queued responses in storage)
  • Cancellation:
    • Fetch response, check status
    • If queued: update to cancelled
    • If in_progress: cancel tokio task + update to cancelled
    • If already terminal: conflict error
    • Idempotent for already-cancelled
  • Polling: clients GET the response to check status
  • HTTP handler: POST /v1/responses/{id}/cancel

Config

filter: background_jobs
queue_size: 100
num_workers: 10
timeout_seconds: 300

Praxis trait methods

  • on_request — if background=true, enqueue and return immediately with queued response
  • Separate: worker loop that processes queued requests through the full filter chain

Dependencies

  • Response store
  • Tokio runtime

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Task.

    Projects

    Status
    Next

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions