Skip to main content

Concurrent HTTP download orchestration with async I/O

Project description

Rheo

PyPI Python License CI codecov

Concurrent HTTP download orchestration with async I/O

What It Is

A Python library for managing multiple asynchronous HTTP downloads. Built on asyncio and aiohttp, it handles concurrency, tracks state, emits events, and lets you monitor progress.

Installation

pip install rheopy

Quick Start

import asyncio
from pathlib import Path
from rheo import DownloadManager
from rheo.domain import FileConfig

async def main():
    files = [
        FileConfig(url="https://example.com/file1.zip", priority=1),
        FileConfig(url="https://example.com/file2.pdf", priority=2),
    ]

    async with DownloadManager(download_dir=Path("./downloads"), max_concurrent=3) as manager:
        await manager.add(files)
        await manager.wait_until_complete()

    print("All downloads complete!")

asyncio.run(main())

Key Features

  • Concurrent downloads with worker pool
  • Priority queue
  • Hash validation (MD5, SHA256, SHA512)
  • Retry logic with exponential backoff
  • Real-time speed & ETA tracking
  • Event-driven architecture
  • CLI tool (rheo download)
  • Full type hints

CLI Usage

# Basic download
rheo download https://example.com/file.zip

# With hash verification
rheo download https://example.com/file.zip --hash sha256:abc123...

# Custom output directory
rheo download https://example.com/file.zip -o /path/to/dir

See CLI Reference for complete command documentation.

Documentation

Examples

Check examples/ for working code:

  • 01_basic_download.py - Simple single file download
  • 02_multiple_with_priority.py - Multiple files with priorities
  • 03_hash_validation.py - File integrity verification
  • 04_progress_tracking.py - Real-time progress monitoring
  • 05_event_monitoring.py - Event-driven statistics

Project Status

Alpha - Core functionality works, but API may change before 1.0.

  • Python: 3.12+
  • License: MIT
  • Version: 0.1.0

Questions?

Open an issue on GitHub or check the full documentation.

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

rheopy-0.2.0.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

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

rheopy-0.2.0-py3-none-any.whl (63.3 kB view details)

Uploaded Python 3

File details

Details for the file rheopy-0.2.0.tar.gz.

File metadata

  • Download URL: rheopy-0.2.0.tar.gz
  • Upload date:
  • Size: 43.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.0 Linux/6.11.0-1018-azure

File hashes

Hashes for rheopy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9e2be7fbba25d4f9d664444e9517e56f7c65ca5f5673ed672ced04227ec108dc
MD5 a124bc65f5fcac6e39f7701541d9754f
BLAKE2b-256 7e880500a4e369af846be300e47eb7ca9af4df4a1e7950fe8cb840f256b98288

See more details on using hashes here.

File details

Details for the file rheopy-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: rheopy-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 63.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.0 Linux/6.11.0-1018-azure

File hashes

Hashes for rheopy-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a5f2fa0134a50a063713dd060806a2732d9e9a631d0c2700bc01b43df86b5c69
MD5 c083a4fa3dce021a06d0471150859491
BLAKE2b-256 ba6432646fa1f7f713ccf8a1edb32274a44f73dafb51a2ae5a5a5a158be48a57

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