Skip to main content

Whilly v4.0 remote-worker — meta-package that installs the minimal worker dep closure (httpx + pydantic + whilly.core + whilly.adapters.transport.client). Provides the `whilly-worker` console script via whilly-orchestrator[worker].

Project description

whilly-worker

Remote-worker meta-package for Whilly v4.0. Installs the minimal worker dep closure (httpx + pydantic + whilly.core + whilly.adapters.transport.client) without the control-plane stack.

What this package is — and isn't

whilly-worker is a meta-package: it ships no Python source of its own. Installing it pulls in whilly-orchestrator[worker], which in turn provides the whilly-worker console script and the entire transitive code path the script needs to talk to a Whilly v4.0 control plane over HTTP.

The two install routes below are exactly equivalent — same dep tree, same console script, same versions. Pick whichever fits your tooling:

pip install whilly-worker                     # via this meta-package
pip install whilly-orchestrator[worker]       # via the extras

The reason both exist is that operators deploying a worker VM (or building a python:3.12-slim Docker image) tend to think "I am installing the Whilly worker", not "I am installing whilly-orchestrator with the [worker] extras". The shim makes the name match the role.

Why the dep closure matters

Whilly v4.0 splits its runtime into two deployment shapes that share the pure domain layer (whilly.core) but never share a process:

Shape Install Pulled deps
Control plane pip install whilly-orchestrator[server] asyncpg + fastapi + uvicorn + alembic + sqlalchemy[asyncio] + base
Remote worker pip install whilly-worker httpx + base (rich + pydantic + typer + a few legacy v3 runtime deps)
All-in-one dev pip install whilly-orchestrator[all] both of the above

The split exists for three concrete reasons (PRD §FR-1.5, §SC-6):

  1. A worker VM never needs Postgres clients or a web server. Pulling them in inflates the install footprint by ~50 MB and adds N+1 CVE-tracking surface for libraries the worker process literally never imports.
  2. Failure mode is loud, not silent. If a future refactor accidentally imports asyncpg from a worker-side module, an operator on a worker-only install gets an ImportError at process start instead of a silent compatibility shim. The .importlinter contract (TASK-029) is the static guarantee; the dep split is the runtime one.
  3. Image hygiene. The Whilly worker Docker image (scripts/run-v4-refactor.sh driven, see TASK-024b demo) is a single pip install whilly-worker from python:3.12-slim — no need to know about extras, no need to keep a shopping list of pinned packages in the Dockerfile.

Usage example

After install, the worker is driven by the whilly-worker console script (registered by whilly-orchestrator, made available because the meta-package depends on [worker]):

# Boot a worker that connects to a Whilly control plane and drains tasks
# until SIGTERM / SIGINT (Ctrl-C). The token comes from the bootstrap-token
# flow on the control plane (POST /workers/register, TASK-022a2).
whilly-worker \
    --connect https://control.whilly.example.com \
    --token "$WHILLY_WORKER_TOKEN" \
    --worker-id worker-vm-01

# Single-task mode — claim one task, run it, exit 0. Useful for cron-driven
# workers and for the integration tests in tests/integration/.
whilly-worker \
    --connect http://localhost:8000 \
    --token "$WHILLY_WORKER_TOKEN" \
    --once

Equivalent environment-variable form (lets you bake an image once and inject config at runtime):

export WHILLY_CONTROL_URL=https://control.whilly.example.com
export WHILLY_WORKER_TOKEN="$(cat /run/secrets/whilly-worker-token)"
export WHILLY_WORKER_ID=worker-vm-01

whilly-worker          # picks up env, runs forever
whilly-worker --once   # picks up env, drains one task

Missing --token / WHILLY_WORKER_TOKEN exits with code 2 and prints a hint, instead of trying to register anonymously and failing on the first claim round-trip — that fail-fast was added in TASK-022c.

Compatibility

whilly-worker version Control-plane version Python
3.3.x (this release) whilly-orchestrator >= 3.3.0 (the v4.0 development line) 3.12 / 3.13
4.0.0 whilly-orchestrator == 4.0.0 (TASK-033a release) 3.12 / 3.13

The dependency on whilly-orchestrator[worker] is pinned to the exact same version (==3.3.0), not loosely constrained. The wire protocol between RemoteWorkerClient and the FastAPI endpoints is part of the same release train, so worker and control plane must move together.

Where the actual code lives

  • whilly.cli.workerwhilly-worker console-script entry point (TASK-022c)
  • whilly.worker.remote — async loop (claim → run → complete | fail) over HTTP (TASK-022b1/2/3)
  • whilly.adapters.transport.client — the RemoteWorkerClient (TASK-022a1/2/3)
  • whilly.core — pure domain layer, zero external deps

All of these ship inside the whilly-orchestrator wheel. This meta-package only gates which dependencies pip resolves around them.

See also

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

whilly_worker-4.4.2.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

whilly_worker-4.4.2-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file whilly_worker-4.4.2.tar.gz.

File metadata

  • Download URL: whilly_worker-4.4.2.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for whilly_worker-4.4.2.tar.gz
Algorithm Hash digest
SHA256 159f17ac9e5c3cd93a55f9975e3ab05200f0ea0c3f3df23df11962e3ad02d2f4
MD5 032bcb4712937a43b34c7e8c63cc9dff
BLAKE2b-256 f7bcedbbdbedcbafe70d680bcf487346b17457e9ce0bea9522464fb5f70a9451

See more details on using hashes here.

File details

Details for the file whilly_worker-4.4.2-py3-none-any.whl.

File metadata

  • Download URL: whilly_worker-4.4.2-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for whilly_worker-4.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3bfda9dbd9360ecd5cbc856a3753468c0a39cd8b3c58cd44244baeecb3a09c0a
MD5 8215facad423d24647e37f6817b052a7
BLAKE2b-256 e908ea20fabe6d4c039e09713988bc20823b4b5103d318f6ade1a45ccec1e60e

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