Python SDK for flux batch jobs and services
Project description
flux-batch
Python SDK to generate Flux batch jobs and services
Related Projects
- flux-mcp: MCP functions for Flux.
- flux-mcp-server: MCP server.
- fractale-mcp: (fractale) MCP orchestration (agents, databases, ui interfaces).
- hpc-mcp: HPC tools for a larger set of HPC and converged computing use cases.
Services
- flux-scribe: Write job events to a local sqlite database via the JournalConsumer (not added yet, written and needs testing)
Usage
This is a small Flux utility that makes it easy to create Flux batch jobs and services. The use case is to submit work (one or more jobs) under an instance, and run a custom service, or epilog and prolog commands. We will provision several services here, and you can also provide your own name to start / stop.
Setup
Install the library and start (or be in) a flux instance.
flux start
pip install -e . --break-system-packages
Examples
We have a few simple examples:
python3 ./examples/save_logs.py
Or run the controlled example to see a batch job with prolog and epilog run and complete:
python3 ./tests/test_flux_batch.py
Flux Batch Module Test
[OK] Connected to Flux.
[*] Creating batch jobs...
[*] Mapping attributes to BatchJobspecV1...
[*] Previewing submission (Dryrun -> Wrapper)...
#!/bin/bash
echo 'Batch Wrapper Starting'
flux submit --wait /bin/echo 'Job 1 starting'
flux submit --wait /bin/sleep 5
flux submit --wait /bin/echo 'Job 2 finished'
flux job wait --all
echo 'Batch Wrapper Finished'
[*] Performing submission (Dryrun -> Wrapper -> Submit)...
[SUCCESS] Batch submitted! Flux Job ID: ƒMX29AwFu
$ flux jobs -a
JOBID USER NAME ST NTASKS NNODES TIME INFO
ƒMX29AwFu vscode test-batch R 1 1 4.213s 68e8c4399c15
$ flux jobs -a
JOBID USER NAME ST NTASKS NNODES TIME INFO
ƒMX29AwFu vscode test-batch CD 1 1 6.354s 68e8c4399c15
Here is an explicit (manual) example to do the same:
import flux
import flux_batch
# for pretty printing
# from rich import print
handle = flux.Flux()
# Create your batch job with some number of commands
batch = flux_batch.BatchJobV1()
batch.add_job(["echo", "Job 1 starting"])
batch.add_job(["sleep", "5"])
batch.add_job(["echo", "Job 2 finished"])
# Wrap it up into a jobspec
jobspec = flux_batch.BatchJobspecV1.from_jobs(
batch,
nodes=1,
nslots=1,
time_limit="10m",
job_name="test-batch",
# Add saving of logs, info, and metadata
logs_dir="./logs",
)
# Add a prolog and epilog
jobspec.add_prolog("echo 'Batch Wrapper Starting'")
jobspec.add_epilog("echo 'Batch Wrapper Finished'")
# Add a service (this assumes user level that exists)
jobspec.add_service("flux-scribe")
# Preview it
print(flux_batch.submit(handle, jobspec, dry_run=True))
# Submit that bad boi.
jobid = flux_batch.submit(handle, jobspec)
TODO
- Option for controlled output (that we can easily get after)
- Create flux-scribe service, add example (need to test on cluster with systemctl)
License
HPCIC DevTools is distributed under the terms of the MIT license. All new contributions must be made under this license.
See LICENSE, COPYRIGHT, and NOTICE for details.
SPDX-License-Identifier: (MIT)
LLNL-CODE- 842614
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flux_batch-0.0.1.tar.gz.
File metadata
- Download URL: flux_batch-0.0.1.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7ddc74cf17691f61a278dfc738c9b798b7445b40169434fe596a91bfe281dc8
|
|
| MD5 |
af216b1f01033139efc6bb091de76e46
|
|
| BLAKE2b-256 |
226750abf65e0fe08f909b5dfc5fec76e3e0b741905a5c009abc975e88bda423
|
File details
Details for the file flux_batch-0.0.1-py3-none-any.whl.
File metadata
- Download URL: flux_batch-0.0.1-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0ab86cedcdc8cbf47933a4902d5770e03d4de2198af0e976c7ac794648c1546
|
|
| MD5 |
7466f64def2ca4fec5509ea316a95e6d
|
|
| BLAKE2b-256 |
42d0fcf62330dab3ed2472aa4849965c99b49ff8c8cb5e63782b5d166e64dd22
|