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.4.tar.gz (15.3 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.4-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: job_service_sdk-2.0.4.tar.gz
  • Upload date:
  • Size: 15.3 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.4.tar.gz
Algorithm Hash digest
SHA256 02d8639a3a51392b1039ca689d61acff02fe2ac3205a715b092d86b51c7a0aad
MD5 d192d6c068a3cc1f3e9db96d57fb766a
BLAKE2b-256 980b46112b7f9c17cf1adea9e31b62a7f3b2a71fa9807afbd4a225c9b1a8c622

See more details on using hashes here.

Provenance

The following attestation bundles were made for job_service_sdk-2.0.4.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.4-py3-none-any.whl.

File metadata

File hashes

Hashes for job_service_sdk-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 429d57c499309d193c37cf302732e0c69e9d97f6b4064d10a749bd048abbe273
MD5 607daee6ba21881b79df9173e87d9848
BLAKE2b-256 6a60c105072a07693453cbc7e1ab4c795e31ca677d6683dfe50a00f4289787e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for job_service_sdk-2.0.4-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