Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

quapp-hpc

Python library cho Quapp HPC functions — cầu nối giữa Quapp FaaS platform và Slurm HPC cluster.

Architecture

ksvc (Docker)
├── index.py                  FastAPI server
├── quapp_hpc/
│   ├── factory/
│   │   └── hpc_handler_factory.py   Entry point cho user
│   ├── component/backend/
│   │   └── hpc_invocation.py        Orchestrates job lifecycle
│   └── model/
│       ├── provider/slurm_provider.py   Auth headers, base URL
│       └── device/slurm_device.py       Submit → Poll → S3 download
└── function/
    └── handler.py            User-defined processing() + post_processing()

Luồng thực thi

index.py nhận HTTP POST
    → HpcHandlerFactory.create_handler(event, processing_fn, post_processing_fn)
    → InvocationHandler.handle()
    → HpcInvocation.submit_job()
        1. processing_fn(invocation_input)  → bash script string
        2. SlurmDevice._create_job(script)  → POST Slurm REST API → slurm_job_id
        3. SlurmDevice._get_job_result()    → poll mỗi 30s → COMPLETED/FAILED
        4. SlurmDevice._download_s3_result()→ boto3 get s3://$S3_BUCKET/$JOB_UUID/output.json
        5. post_processing_fn(s3_result)    → final response

Environment variables (từ K8s Secret slurm-credentials)

Var Ví dụ Mô tả
SLURM_API_URL http://10.1.0.15:6820 Slurm REST API base URL
SLURM_JWT eyJ... JWT token cho Slurm auth
SLURM_USERNAME quapp-svc Slurm username
SLURM_ACCOUNT quapp Slurm account/allocation
S3_BUCKET quapp-slurm-output-dev S3 bucket cho job output
AWS_REGION ap-southeast-1 AWS region
SLURM_POLL_SEC 30 Polling interval (giây)
SLURM_TIMEOUT_SEC 21600 Max wait time (giây, default 6h)

invocation_input schema

Xem chi tiết tại ../qapp-sdk-templates/slurm-hpc/README.md.

Tóm tắt:

{
  "resources": { "partition", "nodes", "cpus_per_task", "gpus", "memory_gb", "time_limit" },
  "container": { "type": "sif"|"docker"|"none", "image": "..." },
  "job":       { "type": "script"|"command", "script"|"command": "...", "environment": {}, "input_s3_paths": [] }
}

Slurm REST API

  • Version: v0.0.40
  • Submit: POST {SLURM_API_URL}/slurm/v0.0.40/job/submit
  • Status: GET {SLURM_API_URL}/slurm/v0.0.40/job/{job_id}
  • Auth headers: X-SLURM-USER-NAME, X-SLURM-USER-TOKEN

Job state mapping

Slurm state Quapp state
PENDING, CONFIGURING, RUNNING, COMPLETING RUNNING
COMPLETED DONE
FAILED, CANCELLED, TIMEOUT, NODE_FAIL, PREEMPTED ERROR

S3 output pattern

Job script phải upload kết quả:

aws s3 cp /tmp/output.json s3://$S3_BUCKET/$JOB_UUID/output.json

$JOB_UUID và $S3_BUCKET được inject tự động bởi SlurmDevice._create_job() qua Slurm environment array.

K8s Secret

# infrastructure/quapp-job-scheduler/k8s/cts/slurm-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: slurm-credentials
  namespace: quapp-functions-dev
stringData:
  SLURM_JWT: "<generate: sudo scontrol token username=quapp-svc lifespan=2592000>"
  SLURM_API_URL: "http://10.1.0.15:6820"
  SLURM_USERNAME: "quapp-svc"
  SLURM_ACCOUNT: "quapp"
  S3_BUCKET: "quapp-slurm-output-dev"
  AWS_REGION: "ap-southeast-1"

DB seed required

Chạy script trước khi deploy:

infrastructure/quapp-functions-backend/docs/db/seed_slurm_hpc.sql

Metadata

Release files for quapp-hpc 0.0.1.dev12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quapp-hpc 0.0.1.dev12
File Size Uploaded Provenance
quapp_hpc-0.0.1.dev12.tar.gz 26.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for quapp-hpc 0.0.1.dev12
File Interpreter ABI Platform
quapp_hpc-0.0.1.dev12-py3-none-any.whl Python 3 none any Details

Total release size: 53.7 kB

Release files / quapp_hpc-0.0.1.dev12.tar.gz

Download URL quapp_hpc-0.0.1.dev12.tar.gz
Size 26.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d575094348b381b1b6b45a10f0be177dbed155c87b3d4140bf44ac00d815a880
BLAKE2b-256 checksum
How to use checksums
2add9538c6a0bb92d18cfaf3db50113d6f23a062f40ef457ba88cfe2f74fd106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / quapp_hpc-0.0.1.dev12-py3-none-any.whl

Download URL quapp_hpc-0.0.1.dev12-py3-none-any.whl
Size 27.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78eae48c5591353285bafc21ac01cc86ab65f95c5529ae5a0a79a4f50fe21db9
BLAKE2b-256 checksum
How to use checksums
39fc2031ed692ebc8d043af95f07b059bb20b578a6aa69621cf4019a44c4e51f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Security for quapp-hpc 0.0.1.dev12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page