Skip to main content

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

job_service_sdk-2.0.2.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

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

job_service_sdk-2.0.2-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file job_service_sdk-2.0.2.tar.gz.

File metadata

  • Download URL: job_service_sdk-2.0.2.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

Hashes for job_service_sdk-2.0.2.tar.gz
Algorithm Hash digest
SHA256 d32875a79abfdcdfcc1187946ff4236ef18952cbae2b6b7b9782cbc219d414b4
MD5 313f0634097139f1a4298751a0e6773c
BLAKE2b-256 f12c941eb36fa6d58e01af1cc25c7c1f355a4449e38d1f55c34821ba69a45014

See more details on using hashes here.

Provenance

The following attestation bundles were made for job_service_sdk-2.0.2.tar.gz:

Publisher: publish-pypi.yml on AndresFSerrano/job-service

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file job_service_sdk-2.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for job_service_sdk-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 07a9102a69ce9b6e2e5f372c5f7215720812c7d71610223f2df65a3b1c7a258a
MD5 6598ac66106689665eaeeb4f3b15db99
BLAKE2b-256 84157463726ca5b83a17e6c11af8ff98091112c34c5a61ddcd6ad52ac1fccfd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for job_service_sdk-2.0.2-py3-none-any.whl:

Publisher: publish-pypi.yml on AndresFSerrano/job-service

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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