Skip to main content

Parametrizable taskiq-based worker for Payload CMS — FastAPI kick app + Postgres LISTEN/NOTIFY broker + LlamaParse parse-document task.

Project description

payload-documents-worker-builder

Parametrizable taskiq worker for Payload CMS, ready to drop into a workspace.

Provides:

  • RuntimeConfig — pydantic config (one place for everything: DB DSN, Payload base URL, internal secret, LlamaCloud API key).
  • create_broker(config) — Redis stream broker (via taskiq-redis) with smart retry middleware.
  • create_app(config) — bundles broker + tasks + a small FastAPI HTTP "kicker" that exposes POST /tasks/parse-document so the Next.js side can enqueue parses without speaking the taskiq protocol directly.
  • parse_document_task — built-in task that uploads a Payload document to LlamaParse, polls until done, and writes parsed_text + parse_status back via Payload REST.

Usage

from payload_documents_worker_builder import RuntimeConfig, create_app
from pydantic import SecretStr

config = RuntimeConfig(
    app_name="my-worker",
    redis_url="redis://redis:6379",
    payload_url="http://app:3000",
    payload_service_token=SecretStr("..."),  # Payload API key with write access
    llama_cloud_api_key=SecretStr("..."),
    internal_secret=SecretStr("dev"),
    documents_collection_slug="documents",
)

app, broker = create_app(config)

Run two processes side by side:

uvicorn my_worker.main:app --host 0.0.0.0 --port 8001  # HTTP kicker
taskiq worker my_worker.main:broker                     # task consumer

Architecture

   Next.js (Payload)               payload-documents-worker (uvicorn)        payload-documents-worker (taskiq)
  ─────────────────────────       ────────────────────────────    ────────────────────────────
  POST /api/documents/{id}/parse  POST /tasks/parse-document      consume `parse_document` task
   ├ stamps parse_status='queued'  ├ broker.kiq()                  ├ download file from Payload
   └ HTTP→ kicker                  └ returns 202                   ├ upload to LlamaCloud
                                                                   ├ poll status
                                                                   └ PATCH parsed_text/status
                                          │                                  │
                                          └─────────── Redis Stream ─────────┘

Public API

from payload_documents_worker_builder import (
    create_app,
    create_broker,
    RuntimeConfig,
    LlamaParseClient,
    PayloadClient,
    parse_document_task,
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

payload_documents_worker_builder-0.1.1.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file payload_documents_worker_builder-0.1.1.tar.gz.

File metadata

  • Download URL: payload_documents_worker_builder-0.1.1.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for payload_documents_worker_builder-0.1.1.tar.gz
Algorithm Hash digest
SHA256 43b82a57955b480af0107438f2b7f32f37b0150fd72b8546877345d5ef99fbf5
MD5 c5afc1f11e00c355df30ee7262253ee1
BLAKE2b-256 332d5adbd14fc8bf755d28ad8aed76ad2e841eedf49daaa5a985fb1aae61880b

See more details on using hashes here.

File details

Details for the file payload_documents_worker_builder-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: payload_documents_worker_builder-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for payload_documents_worker_builder-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d9bfa615cf6c926ca2e8d00ab5c85732e3cc36482767fc6ca9dae5d4768a49a5
MD5 f6dd91b0fdc86f82c7356f2f159c8eeb
BLAKE2b-256 74f186a3aae9a175944b67e985afd9266c7149bfcc3a8a051f004c58d36bbe29

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page