Skip to main content

Simple Seamless jobserver implementation

Project description

seamless-jobserver

seamless-jobserver is a lightweight async HTTP service in the Seamless ecosystem. It receives transformation jobs over HTTP, dispatches them to spawned Seamless worker processes, and returns the results. It is one of the four backend services that seamless-remote connects to.

This is a standalone service, not a library. User workflow code never imports seamless-jobserver — it runs as an independent process, normally launched by seamless-config via remote-http-launcher. The only user-facing entry point is the seamless-jobserver CLI command.

How it works

The jobserver is a single-module (jobserver.py) aiohttp server. On startup it spawns a pool of Seamless worker processes (via seamless-transformer). Incoming transformation requests arrive over HTTP, are dispatched to the worker pool, and results are returned to the caller — which is always seamless-remote's jobserver_remote module, never user code directly.

HTTP endpoints

Endpoint Method Description
/ GET Welcome / version check
/healthcheck GET Liveness probe
/run-transformation GET Execute a transformation and return the result checksum

Lifecycle

  1. seamless-config writes a status file and launches seamless-jobserver (via remote-http-launcher or directly).
  2. The jobserver picks a port (fixed or random from a range), spawns worker processes, and starts listening.
  3. It writes its port and status back to the status file so seamless-remote can discover it.
  4. If no requests arrive within the inactivity timeout, the jobserver shuts down automatically.

Relation to the Seamless ecosystem

    seamless-transformer                (user-facing API: direct, delayed)
        │
        │  delegate job
        ▼
    seamless-remote
        │  jobserver_remote
        │  async HTTP
        ▼
    seamless-jobserver                 ◄── this package
        │
        │  dispatches to worker pool
        ▼
    seamless-transformer worker        (spawned child processes)

The jobserver sits between seamless-remote (which sends it work) and seamless-transformer (whose worker processes do the actual computation). It is a simpler, single-machine alternative to the Dask-based execution path provided by seamless-dask.


CLI

seamless-jobserver [options]
Flag Default Description
--port PORT Listen on a specific port (mutually exclusive with --port-range)
--port-range START END Pick a random free port from a range
--host HOST 0.0.0.0 Listening address
--status-file PATH JSON file for reporting port and status
--timeout SECONDS Auto-shutdown after this many seconds of inactivity
--workers N 1 Number of worker processes to spawn

Installation

pip install seamless-jobserver

Requires Python >= 3.10. Dependencies: aiohttp, seamless-core, seamless-transformer. Also imports seamless-remote and seamless-config at runtime for client cleanup and remote-client configuration respectively.

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

seamless_jobserver-0.1.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

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

seamless_jobserver-0.1.1-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file seamless_jobserver-0.1.1.tar.gz.

File metadata

  • Download URL: seamless_jobserver-0.1.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for seamless_jobserver-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3dd6cb8c9e9595d96e8e997552b8b37d4568e485399b170e90bc184735536328
MD5 1a18d282fce2c9b60cc156cae7418f5f
BLAKE2b-256 6039277fa83d0b2bca50c74f2ad1c448b13ad7c4e7616bb1b7f8a3f18c72b725

See more details on using hashes here.

File details

Details for the file seamless_jobserver-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for seamless_jobserver-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 434513195916268dd0c5797e83bb7b16b2d04bcdadb7719cc31368ba083a7e5a
MD5 cce5658d1b092ce99ea18c28faa09af4
BLAKE2b-256 88b47d48b4bf90b9e9c576c192d2a981ca021620df669297569a7197347debaa

See more details on using hashes here.

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