mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36:21 +02:00
Processor group implementation: A wrapper to launch multiple
processors in a single processor
- trustgraph-base/trustgraph/base/processor_group.py — group runner
module. run_group(config) is the async body; run() is the
endpoint. Loads JSON or YAML config, validates that every entry
has a unique params.id, instantiates each class via importlib,
shares one TaskGroup, mirrors AsyncProcessor.launch's retry loop
and Prometheus startup.
- trustgraph-base/pyproject.toml — added [project.scripts] block
with processor-group = "trustgraph.base.processor_group:run".
Key behaviours:
- Unique id enforced up front — missing or duplicate params.id fails
fast with a clear error, preventing the Prometheus Info label
collision we flagged.
- No registry — dotted class path is the identifier; any
AsyncProcessor descendant importable at runtime is packable.
- YAML import is lazy — only pulled in if the config file ends in
.yaml/.yml, so JSON-only users don't need PyYAML installed.
- Single Prometheus server — start_http_server runs once at
startup, before the retry loop, matching launch()'s pattern.
- Retry loop — same shape as AsyncProcessor.launch: catches
ExceptionGroup from TaskGroup, logs, sleeps 4s,
retries. Fail-group semantics (one processor dying tears down the
group) — simple and surfaces bugs, as discussed.
Example config:
processors:
- class: trustgraph.extract.kg.definitions.extract.Processor
params:
id: kg-extract-definitions
- class: trustgraph.chunking.recursive.Processor
params:
id: chunker-recursive
Run with processor-group -c group.yaml.
37 lines
No EOL
1,007 B
TOML
37 lines
No EOL
1,007 B
TOML
[build-system]
|
|
requires = ["setuptools>=61.0", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "trustgraph-base"
|
|
dynamic = ["version"]
|
|
authors = [{name = "trustgraph.ai", email = "security@trustgraph.ai"}]
|
|
description = "TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline."
|
|
readme = "README.md"
|
|
requires-python = ">=3.8"
|
|
dependencies = [
|
|
"pulsar-client",
|
|
"prometheus-client",
|
|
"requests",
|
|
"python-logging-loki",
|
|
"pika",
|
|
]
|
|
classifiers = [
|
|
"Programming Language :: Python :: 3",
|
|
"Operating System :: OS Independent",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/trustgraph-ai/trustgraph"
|
|
|
|
[project.scripts]
|
|
processor-group = "trustgraph.base.processor_group:run"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["trustgraph*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"trustgraph.i18n.packs" = ["*.json"]
|
|
|
|
[tool.setuptools.dynamic]
|
|
version = {attr = "trustgraph.base_version.__version__"} |