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-1.0.0.tar.gz (13.7 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-1.0.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: job_service_sdk-1.0.0.tar.gz
  • Upload date:
  • Size: 13.7 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-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d4d609e824e402f1946b92f47cba145e8492676d4ed8ed136aa7d40e0831532b
MD5 7027e074455a028939b2648485dce61e
BLAKE2b-256 9a023771f7a75503346789ffc475bbbde3f3142a573fca250387e50fd5422aed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for job_service_sdk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c650b9d4953be0af776bc0359b32cbdde89434020459315f545638aa7d9d6ea6
MD5 782c6821f338930486301b96b33e6b91
BLAKE2b-256 e0bac717a1864906355ada2061e801ebb596c54532ade6e1d560b2e432c08b83

See more details on using hashes here.

Provenance

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