Skip to main content

Modern job queue for local and cluster runners

Project description

Molq: Molcrafts Queue Interface

Tests PyPI version Python 3.10+ License: MIT

Molq is a unified and flexible job queue system designed for both local execution and cluster computing environments. It provides a clean, decorator-based API that makes it easy to submit, monitor, and manage computational tasks across different execution backends.

✨ Key Features

  • 🎯 Unified Interface: Single API for local and cluster execution
  • 🐍 Decorator-Based: Simple, Pythonic syntax using decorators
  • ⚡ Generator Support: Advanced control flow with generator-based tasks
  • 🔌 Multiple Backends: Support for local execution, SLURM clusters, and more
  • 📊 Job Monitoring: Built-in status tracking and error handling
  • 💾 Resource Management: Flexible resource allocation and cleanup
  • 🔄 Job Dependencies: Chain jobs and manage complex workflows
  • 📧 Notifications: Email alerts for job status changes

🚀 Quick Start

Installation

pip install molq

Basic Usage

from molq import submit

# Create submitters for different environments
local = submit('dev', 'local')           # Local execution
cluster = submit('hpc', 'slurm')         # SLURM cluster

@local
def hello_world(name: str):
    """A simple local job."""
    job_id = yield {
        'cmd': ['echo', f'Hello, {name}!'],
        'job_name': 'greeting'
    }
    return job_id

@cluster
def train_model():
    """A GPU training job on the cluster."""
    job_id = yield {
        'cmd': ['python', 'train.py'],
        'cpus': 16,
        'memory': '64GB',
        'time': '08:00:00',
        'gpus': 2,
        'partition': 'gpu'
    }
    return job_id

# Run jobs
hello_world("Molq")
job_id = train_model()

Command Line Integration

from molq import cmdline

@cmdline
def get_system_info():
    """Execute command and capture output."""
    result = yield {'cmd': ['uname', '-a']}
    return result.stdout.decode().strip()

system_info = get_system_info()
print(system_info)

📖 Documentation

🎯 Supported Backends

Backend Description Status
Local Local machine execution ✅ Full support
SLURM HPC cluster scheduler ✅ Full support
PBS/Torque Legacy cluster scheduler 🚧 Basic support
LSF IBM cluster scheduler 🚧 Basic support

🔧 Advanced Features

Multi-Step Workflows

@cluster
def analysis_pipeline():
    # Step 1: Preprocessing
    prep_job = yield {
        'cmd': ['python', 'preprocess.py'],
        'cpus': 8, 'memory': '32GB', 'time': '02:00:00'
    }

    # Step 2: Analysis (depends on preprocessing)
    analysis_job = yield {
        'cmd': ['python', 'analyze.py'],
        'cpus': 16, 'memory': '64GB', 'time': '08:00:00',
        'dependency': prep_job  # Wait for preprocessing
    }

    return [prep_job, analysis_job]

Error Handling

@cluster
def robust_job():
    try:
        return yield {'cmd': ['python', 'risky_script.py']}
    except Exception:
        # Fallback to safer approach
        return yield {'cmd': ['python', 'safe_script.py']}

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Inspired by Hamilton for dataflow patterns
  • Built for the scientific computing and HPC community

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

molcrafts_molq-0.1.0.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

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

molcrafts_molq-0.1.0-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file molcrafts_molq-0.1.0.tar.gz.

File metadata

  • Download URL: molcrafts_molq-0.1.0.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for molcrafts_molq-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2dce4ca04bcf38ab96c571d529b8e9781e30ea8ddbc4a4332eae6ed6e4033a82
MD5 48c7daaacf9366a71b4e6856545dfdd7
BLAKE2b-256 37a884b8556afad4c1fe830e26f7641494951e0dc88112feaa918bbed1b1cf82

See more details on using hashes here.

Provenance

The following attestation bundles were made for molcrafts_molq-0.1.0.tar.gz:

Publisher: release.yml on MolCrafts/molq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file molcrafts_molq-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: molcrafts_molq-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for molcrafts_molq-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 694dde8871bda877ca66e0f3012f7ac02d808f5f18bbf81b56dca9d6482c7668
MD5 ec72562bf719f48b5e39004acdf02f67
BLAKE2b-256 a1e043243d766cc755ecbd6caf371f2469cd7c188b101cb76bab6dc3a0496680

See more details on using hashes here.

Provenance

The following attestation bundles were made for molcrafts_molq-0.1.0-py3-none-any.whl:

Publisher: release.yml on MolCrafts/molq

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