Cliente y runtime para integrarse con job_service
Project description
job-service
SDK cliente y runtime para integrarse con un job_service remoto.
Este paquete permite:
- registrar un servicio consumidor y su manifest de jobs
- crear ejecuciones remotas
- reportar progreso, eventos, resultados y errores
- construir flows reutilizables
- ejecutar workers con Inngest Connect o con un worker local simple
Instalación
pip install job-service-sdk
API pública principal
from job_service_sdk import (
JobClientConfig,
JobDefinitionConfig,
JobServiceClient,
JobServiceProvider,
build_service_client_config,
bootstrap_job_service_provider,
initialize_job_service_provider_from_settings,
job_flow,
build_job_definition_configs,
start_job_runtime_from_settings,
stop_job_runtime_from_settings,
handler,
JobWorker,
)
Registrar un servicio y sus jobs
from job_service_sdk import JobClientConfig, JobDefinitionConfig, JobServiceClient
client = JobServiceClient("http://localhost:8001")
client.register_service(
JobClientConfig(
client_key="sample-backend",
display_name="Sample Backend",
base_url="http://sample-backend:8000",
healthcheck_url="http://sample-backend:8000/api/v1/health",
),
[
JobDefinitionConfig(
client_key="sample-backend",
job_key="sample_job",
display_name="Sample Job",
)
],
)
Crear una ejecución
from job_service_sdk import JobServiceClient
client = JobServiceClient("http://localhost:8001")
execution = client.create_execution(
"sample_job",
job_input={"sample_key": "sample_value"},
requested_by_id="sample.user",
requested_by_display="sample.user@example.com",
)
Reportar progreso y completar
from uuid import UUID
from job_service_sdk import JobServiceClient
client = JobServiceClient("http://localhost:8001")
job_id = UUID("00000000-0000-0000-0000-000000000001")
client.report_progress(
job_id,
progress_current=1,
progress_total=3,
progress_label="processing",
)
client.complete_execution(
job_id,
result={"processed_items": 4},
result_summary="Job completado",
)
Flow declarativo
from job_service_sdk import JobFlow, job_flow
@job_flow(
job_key="sample_job",
display_name="Sample Job",
description="Ejemplo de flow declarativo",
)
def build_sample_flow() -> JobFlow:
flow = JobFlow()
return flow
Worker local
from job_service_sdk import JobServiceClient, JobWorker, handler
@handler("sample_job")
async def sample_handler(job_id, job_input):
return {"processed_items": 1}
client = JobServiceClient("http://localhost:8001")
worker = JobWorker(client)
Inngest Connect
El paquete incluye helpers para levantar el runtime configurado a partir de settings y definiciones ya registradas.
from job_service_sdk import (
initialize_job_service_provider_from_settings,
start_job_runtime_from_settings,
stop_job_runtime_from_settings,
)
initialize_job_service_provider_from_settings(
settings,
definitions_module="sample.jobs_config",
)
await start_job_runtime_from_settings(
settings,
definitions_module="sample.jobs_config",
)
await stop_job_runtime_from_settings(settings)
Hoy el runtime soportado es inngest, pero la app consumidora ya no necesita decidir eso directamente.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file job_service_sdk-2.0.1.tar.gz.
File metadata
- Download URL: job_service_sdk-2.0.1.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2df3e92cf5453dccbe76036b408c62524589aee18e6d8f32c3b2cd5257756d6f
|
|
| MD5 |
bd8acc3a9419c692224530b23d442c9e
|
|
| BLAKE2b-256 |
2f8e228c0a70d17bebf037f093b25d362723a763e2ca244fd8f55d233d8a5c4f
|
Provenance
The following attestation bundles were made for job_service_sdk-2.0.1.tar.gz:
Publisher:
publish-pypi.yml on AndresFSerrano/job-service
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
job_service_sdk-2.0.1.tar.gz -
Subject digest:
2df3e92cf5453dccbe76036b408c62524589aee18e6d8f32c3b2cd5257756d6f - Sigstore transparency entry: 1183876201
- Sigstore integration time:
-
Permalink:
AndresFSerrano/job-service@97798a8e70543aad9281ba9768dc048f3e09de2d -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/AndresFSerrano
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@97798a8e70543aad9281ba9768dc048f3e09de2d -
Trigger Event:
release
-
Statement type:
File details
Details for the file job_service_sdk-2.0.1-py3-none-any.whl.
File metadata
- Download URL: job_service_sdk-2.0.1-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07579b11d4b9f225a41f4117adfd6ef13cd28a6293318cb7b940d27c1eca6911
|
|
| MD5 |
e2096cb104706581c950e679fa1cd256
|
|
| BLAKE2b-256 |
62c935524e300accdd26cdf0c28d441973d813649e73868006f852850e68a777
|
Provenance
The following attestation bundles were made for job_service_sdk-2.0.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on AndresFSerrano/job-service
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
job_service_sdk-2.0.1-py3-none-any.whl -
Subject digest:
07579b11d4b9f225a41f4117adfd6ef13cd28a6293318cb7b940d27c1eca6911 - Sigstore transparency entry: 1183876262
- Sigstore integration time:
-
Permalink:
AndresFSerrano/job-service@97798a8e70543aad9281ba9768dc048f3e09de2d -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/AndresFSerrano
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@97798a8e70543aad9281ba9768dc048f3e09de2d -
Trigger Event:
release
-
Statement type: