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
  • File exists handling (skip, overwrite, or error)
  • 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.4.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.4.0.tar.gz (46.7 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.4.0-py3-none-any.whl (66.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rheopy-0.4.0.tar.gz
  • Upload date:
  • Size: 46.7 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.4.0.tar.gz
Algorithm Hash digest
SHA256 63cf50e8f83f80ef1295ddd1c37b40f5df5252671446a6c6024b0979e6667541
MD5 282f12ec91b3440fea1060d912ffc619
BLAKE2b-256 e535d0c6d9473d8207f16a6641c124fa114fd59543c0c4d6e3a4a551295f1c46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rheopy-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 66.5 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cb31ed7486d79021dfcf89862471d20ec33fd75b078f4ba826e7e9f249a7534
MD5 92e2240d2a3b712a335ed2bd4049caa8
BLAKE2b-256 d22274f1a9f287821c89f4286c421e6d90cf2aa6a125460b856a35b18ece37bf

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