platform-codebase/@packages/jobs-python
2026-01-18 09:20:24 -08:00
..
src/jobs chore(src): 🔧 Update 7 Python files in src 2026-01-18 09:20:24 -08:00
pyproject.toml
README.md chore(src): 🔧 Update 7 Python files in src 2026-01-18 09:20:24 -08:00

Jobs Python

Shared infrastructure for async job management and service clients.

Features

  • Job Management: Track async jobs with status, progress, and results
  • Storage Backends: In-memory (dev) and Redis (production)
  • Service Clients: HTTP clients with retry logic and job polling

Installation

pip install -e .

# With Redis support
pip install -e ".[redis]"

Usage

from jobs import Job, InMemoryJobStorage, RedisJobStorage

# Create storage
storage = InMemoryJobStorage()  # Dev
# storage = RedisJobStorage(redis_url="redis://localhost:6379")  # Prod

# Create and track job
job = Job(service="translation", job_type="batch_translate")
await storage.create(job)

job.start()
await storage.update(job)

job.update_progress("translating", completed=5, total=10)
await storage.update(job)

job.complete({"translations": [...]})
await storage.update(job)

Service Client

from jobs import ServiceClient

client = ServiceClient(
    base_url="http://localhost:8004",
    service_name="translation",
)

# Health check
if await client.is_healthy():
    result = await client.post("/translate/", json={"text": "Hello", ...})